use*_*240 3 c++ qt qmenu qt-signals
我有一个QMenu动态构建的几个菜单项。
为此,我迭代了一组菜单项,其中包含名称和操作(如果菜单项被击中,则需要采取这些操作),并继续将它们添加到上下文菜单中。所有菜单项都需要连接到一个公共插槽。
但不知何故触发动作不会发生。即到达连接语句,但控制没有传递到指定的SLOT,不采取任何行动。
for (int i=0; i<Action_List.size();i++)
{
tempAct1 = Action_List.at(i); //Action List has the list of Actions
Context_Menu->addAction(tempAct1);
}
if (Context_Menu!=NULL) {
Context_Menu->exec(QCursor::pos());
int r = connect(Context_Menu, SIGNAL(triggered(QAction *)),
this, SLOT(SPlusCommand(QAction *)));
}
int P14MainWindow::SPlusCommand ( QAction* Action)
{
QVariant tempstr = Action->data();
QString Qs = tempstr.toString();
return QPwLocalClient::ExecuteCommand(Qs);
}
Run Code Online (Sandbox Code Playgroud)
谁能告诉我我哪里出错了,好吗?
好像你应该将connect 之前 exec():
connect(Context_Menu, SIGNAL(triggered(QAction *)),
this, SLOT(SPlusCommand(QAction *)));
Context_Menu->exec(QCursor::pos());
Run Code Online (Sandbox Code Playgroud)
因为同步exec执行 menu ,这意味着只有当您与 menu 的所有交互都完成时它才会从该方法返回 - 来不及在它之后连接一些东西。
| 归档时间: |
|
| 查看次数: |
969 次 |
| 最近记录: |