新手各位大大们请看过来!Qt信号与槽连接成功了但是槽函数进不去是几个意思啊T.T
新手求助各位大大们请看过来!Qt信号与槽连接成功了但是槽函数进不去是几个意思啊?T.T
情况是这样的。
我自己重写了一个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
------解决方案--------------------
接分,呵呵...
------解决方案--------------------
------解决方案--------------------
刚看到,接分吧
情况是这样的。
我自己重写了一个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
------解决方案--------------------
接分,呵呵...
------解决方案--------------------
------解决方案--------------------
刚看到,接分吧