新手各位大大们请看过来!Qt信号与槽连接成功了但是槽函数进不去是几个意思啊T.T

新手求助各位大大们请看过来!Qt信号与槽连接成功了但是槽函数进不去是几个意思啊?T.T
本帖最后由 u014587448 于 2014-04-07 18:33:46 编辑
情况是这样的。

我自己重写了一个Item,然后重写了Item和Scene的contextMenuEvent()函数,因为在Item上和Item外我想要不同的右键菜单。

在Item的类里,我新写了槽函数为了连接右键点击信号,经测试,连接成功了呐。

但是槽函数没进去啊!!!

槽函数里的断点没用啊!!!


各位大大们现个身行行好帮帮我吧!

T.T

贴一些相关的代码吧。

重写Item的右键菜单函数:
void BlocInfo::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
{
    event->accept();
    QMenu menu;
    QAction *renameAction = menu.addAction("Rename");
    QAction *typeAction = menu.addAction("Type");
    QAction *BypassAction = menu.addAction("Bypass type");
    QAction *resSizeAction = menu.addAction("Resize");
    QAction *delConnectAction = menu.addAction("Delete all the connections");
    QAction *selectedAction = menu.exec(event->screenPos());

    bool isConnected = QObject::connect(renameAction,SIGNAL(triggered()),
                                        this,SLOT(renameBloc()));
    qDebug() << isConnected;
}
测试结果:
这个qDebug显示的是true。
所有的QAction改成成员变量也木有用。
QMenu改成指针也木有用。


新写的slot函数:
void BlocInfo::renameBloc()
{
    qDebug() << "Test" ;
    bool a = 0;
    mBlocName = "22222";
    
}
测试结果:
这个qDebug不显示。
这个函数中的断点全部不断。


重写Scene的右键菜单函数:
void Scene::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
{
    QGraphicsItem *selectedItem = itemAt(event->scenePos());

    if (!selectedItem)
    {
        QMenu mymenu;
        QAction *add = mymenu.addAction("Add...");
        mymenu.exec(QCursor::pos());
    }
    else
    {
        QGraphicsScene::contextMenuEvent(event);
    }

}

这个函数的写法要感谢@xiachm的资料。
第一次发帖不知道@有没有效果啊
虚心学习,如有白痴的错误,还望各位大大们包涵。
如果嫌分不够会加哒!!!
O(∩_∩)O
------解决方案--------------------
接分,呵呵...
------解决方案--------------------
新手各位大大们请看过来!Qt信号与槽连接成功了但是槽函数进不去是几个意思啊T.T
------解决方案--------------------
刚看到,接分吧