#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.