QMenu没有显示但仍能与之交互

时间:2014-09-12 09:36:13

标签: c++ qt qmouseevent

我有一个图形管理器,用于使用鼠标输入管理图形并与之交互。

在mousePressEvent中(不是从QWidget中覆盖,只是从QWidget传递鼠标位置和按钮的常规方法)我创建了一个QMenu,右键单击并单击图形时显示。

if( button == Qt::RightButton && activeGraphic) {

        QMenu menu("Edit", view());

        QAction * deleteAction = new QAction( "Delete", &menu );
        connect( deleteAction, &QAction::triggered, [=](bool) {
            _lineGraphicHandler->releaseActiveGraphic();
            _lineGraphicHandler->removeGraphic( activeGraphic );
        });
        menu.addAction( deleteAction );

        QAction * settingsAction = new QAction( "Settings", &menu );
        connect( settingsAction, &QAction::triggered, [=](bool) {
            emit showSettings(QString::fromStdString(activeGraphic->type()));
        });
        menu.addAction( settingsAction );

        connect( &menu, &QMenu::aboutToHide, [=] {
            qDebug() << "menu closing";
        });
        connect( &menu, &QMenu::aboutToShow, [=] {
            qDebug() << "menu opening";
        });

        menu.exec( view()->mapToGlobal( pos.toPoint() ) );      
    }

此代码在两个不同的项目中使用,在一个项目中,菜单按预期显示,而在另一个项目中,菜单不可见,但能够接受鼠标点击(我原来遇到的问题是菜单立即关闭)

项目之间的区别在于QMenu所在的窗口小部件层次结构。

项目失败

graphichanlder - QObject
graphicsmode - QObject
graphicwidget - QFrame
graphicsview - QGraphicsView

工作项目

graphichanlder - QObject
graphicsmode - QObject
videotile - QGraphicsObject
graphicsScene - QGraphicsScene

我在做什么可能导致这种行为?


固定

发现了这个错误https://bugreports.qt-project.org/browse/QTBUG-7556,它解释了我遇到的问题。通过在我的QGLWidget周围添加边距来修复它,使其不再是全屏。

0 个答案:

没有答案