当我按下右键时,我正试图使用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);
}
当我按下右键时,会出现菜单。然后,如果我按左键单击它之外没有任何反应。我必须按两次左键才能使菜单消失。
为什么会这样?谢谢!
答案 0 :(得分:3)
如果单次右键单击调用showContextMenu
两次,就会发生这种情况。您可以通过在showContextMenu
中设置断点并检查是否被调用两次来验证。
可能您的信号插槽连接创建了两次,这可能是这背后的原因。您可以通过将断点设置到进行信号插槽连接的行来进行验证。