Qt按左键两次上下文菜单消失

时间:2015-05-14 09:23:30

标签: qt contextmenu

当我按下右键时,我正试图使用​​Qt的上下文菜单。

这是我尝试过的:

connect(mtreeView, SIGNAL(customContextMenuRequested(const QPoint&)),
        this, SLOT(showContextMenu(const QPoint&)));

Then
void MainTreeViewController::showContextMenu(const QPoint& pos)
{
    QPoint globalPos = mtreeView->mapToGlobal(pos);
    QMenu rightClickMenu;
    rightClickMenu.addAction(QString("Option"));
    rightClickMenu.exec(globalPos);
}

当我按下右键时,会出现菜单。然后,如果我按左键单击它之外没有任何反应。我必须按两次左键才能使菜单消失。

为什么会这样?谢谢!

1 个答案:

答案 0 :(得分:3)

如果单次右键单击调用showContextMenu两次,就会发生这种情况。您可以通过在showContextMenu中设置断点并检查是否被调用两次来验证。

可能您的信号插槽连接创建了两次,这可能是这背后的原因。您可以通过将断点设置到进行信号插槽连接的行来进行验证。