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中设置断点,查看是否调用了两次来验证。

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