1

これは、QGraphicsItemのmouseReleaseEventまたはQContextMenuのいずれかから発生するすべてのQDialogで発生しました。問題が何であるかわかりません-コードは非常に単純です。

...
void MyQGfxItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
    if(event->button() == Qt::RightButton)
    {
        MyDialog someDlg;
        if(someDlg.exec())
        {

        }
    }
}
...

[OK]または[キャンセル]を使用してダイアログを閉じるとすぐに、イベントがトリガーされた場所に空のコンテキストメニューが表示されます。

ここに画像の説明を入力してください

空白の項目は、QDockWidgetを非表示にするか表示するかを制御しているようです。たくさんのグーグル検索が私を立ち往生させました。

編集-これは、マウスの右ボタンが使用されている場合にのみ発生するようです。

4

2 に答える 2

2

QEventのドキュメントによると、親ウィジェットに伝播したくないイベントをaccept()する必要があります。したがって、mouseReleaseEventのどこかに、追加する必要があります

event->setAccepted(true);

また

event->accept();

このコードもmousePressEventに入れる必要があるかもしれないことに注意してください。

于 2012-04-06T02:53:52.910 に答える
0

ハ!とった。すべてが終了した後、QMainWindowが右クリックイベントを取得するように見えます。QMainWindowでthis->setContextMenuPolicy(Qt :: NoContextMenu)を呼び出すと、それが抑制されました。

于 2012-04-06T03:51:00.507 に答える