Qt 按下左键单击两次上下文菜单消失
Qt press left click twice for context menu to disappear
当我按下右键单击时,我正在尝试使用 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);
}
当我按下右键时,出现菜单。然后,如果我在它外面按下左键,什么也不会发生。我必须按两次左键才能使菜单消失。
为什么会这样?谢谢!
如果 showContextMenu
被一次右键单击调用两次,就会发生这种情况。可以通过在showContextMenu
中设置断点,查看是否调用了两次来验证。
可能你的信号槽连接被创建了两次,这可能是这背后的原因。您可以通过在信号槽连接的行设置断点来验证。
当我按下右键单击时,我正在尝试使用 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);
}
当我按下右键时,出现菜单。然后,如果我在它外面按下左键,什么也不会发生。我必须按两次左键才能使菜单消失。
为什么会这样?谢谢!
如果 showContextMenu
被一次右键单击调用两次,就会发生这种情况。可以通过在showContextMenu
中设置断点,查看是否调用了两次来验证。
可能你的信号槽连接被创建了两次,这可能是这背后的原因。您可以通过在信号槽连接的行设置断点来验证。