0

カスタム 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());
    }
}

しかし、メニューはメインアプリケーションウィンドウの外側に表示され、他のモニターの右下に向かって表示されます。コメントアウトされたバージョンを使用すると、メイン ウィンドウの上に表示されます。ポイントを手動で調整して窓の内側でマッサージしようとしましたが、窓の上に置かれるか、下からぶら下がってしまい、中に入ることはありません。

4

1 に答える 1

0

QMenu::execグローバルな地位を占めています。ウィジェットの相対的な位置を取得し、それをシーンの位置にマッピングしています。

代わりにこれを試してください:

    menu.exec(event->screenPos());
于 2013-11-19T18:17:08.060 に答える