使用 QMenu 并传递参数

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)

谁能告诉我我哪里出错了,好吗?

NIA*_*NIA 5

好像你应该将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 的所有交互都完成时它才会从该方法返回 - 来不及在它之后连接一些东西。