我正在使用自定义QGraphicsWidget,当我右键单击它时,我想调出一个菜单。我是这样开始的:
void myQGraphicsWidget::mousePressEvent(QGraphicsSceneMouseEvent *event){
if(event->button() & Qt::RightButton){
const QString test = "test";
QMenu menu;
menu.setTitle(test);
menu.addAction(test);
menu.exec(mapToScene(event->pos()).toPoint());
//menu.exec(mapToScene(QPointF(0,0)).toPoint());
}
}
但是菜单显示在主应用程序窗口之外,朝向我的另一台显示器的右下方。当我使用注释掉的版本时,它会显示在我主窗口的顶部。我已经尝试手动调整点以在窗口内按摩它,但它只会跳到窗户顶部或从底部悬挂,从不在里面。
答案 0 :(得分:0)
QMenu::exec
占据全球地位;你正在拍摄小部件相对位置并将其映射到场景位置。
请改为尝试:
menu.exec(event->screenPos());