需要右键2次才能在项目之间切换上下文菜单?

时间:2014-06-27 04:17:34

标签: c++ qt

以下代码

#include <QtWidgets>
#include <QGLWidget>

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

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

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

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

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

编译并运行它。它需要右键2次才能在项目之间切换上下文菜单。但是,如果我将QGLWidget更改为QWidget。没事。 1右击可以在项目之间切换上下文菜单。任何错误???非常感谢。

一些观察结果:

  • 切换树的位置,GL小部件没问题,即将树设置为中央窗口小部件,将GL窗口小部件设置为停靠窗口。

似乎右键单击事件转到中央窗口小部件,然后被GL窗口小部件阻止。

0 个答案:

没有答案