2015-05-14 56 views
1

我想使用从Qt的上下文菜单,当我按右键单击。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); 
} 

当我按下右键,出现菜单,然后如果按住左键单击它外面没什么hapens。我必须按左键两次才能使菜单消失。

为什么会发生这种情况?谢谢!

+0

你在哪里调用'menu.exec()'? – Amartel

+0

已编辑,无法正常工作 – yonutix

+0

您的代码看起来不错。你使用的是什么操作系统和Qt版本? – Amartel

回答

3

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

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