Требуется 2 щелчка правой кнопкой мыши для переключения контекстных меню между элементами?

#c #qt

#c #qt

Вопрос:

Код ниже

 #include <QtWidgets>
#include <QGLWidget>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QMainWindow w;

    w.setCentralWidget(new QGLWidget(amp;w)); // w.setCentralWidget(new QWidget(amp;w));

    QTreeWidget* tree = new QTreeWidget(amp;w);
    QTreeWidgetItem* item0 = new QTreeWidgetItem(tree, QStringList("a"));
    QTreeWidgetItem* item1 = new QTreeWidgetItem(tree, QStringList("b"));
    tree->setContextMenuPolicy(Qt::CustomContextMenu);
    QObject::connect(tree, amp;QTreeView::customContextMenuRequested, [](){
        QMenu menu;
        menu.addAction("a");
        menu.exec(QCursor::pos());
    });

    QDockWidget* dock = new QDockWidget("Tree", amp;w);
    dock->setWidget(tree);
    w.addDockWidget(Qt::LeftDockWidgetArea, dock);

    w.show();
    return a.exec();
}
  

Скомпилируйте и запустите его. Для переключения контекстных меню между элементами требуется 2 щелчка правой кнопкой мыши. Однако, если я перейду QGLWidget на QWidget . Это нормально. 1 щелчок правой кнопкой мыши может переключать контекстные меню между элементами. Есть ошибки??? Большое спасибо.

Некоторые наблюдения:

  • Переключите позиции дерева, и виджет GL будет в порядке, т.Е. Установите дерево в качестве центрального виджета, а виджет GL — в качестве виджета в dock.

Кажется, событие щелчка правой кнопкой мыши переходит к центральному виджету, а затем блокируется виджетом GL.