1

QActionメニューを作成していますが、アイテムとアイテムの両方をクリックできるようにしたいと考えていますQMenu

の実行exec中に をクリックしても何も起こりませんQMenu。にアクションを追加したとしてもQMenu

これを行う方法はありますか?

これが私が試したものです:

QMenu* menu = new QMenu( "xxx", topMenu );
QAction* action = menu->menuAction();
topMenu->addAction( action );
4

1 に答える 1

0

編集:

exec()なぜ違うのかわかりませんが、ウォークアラウンドするには、次のQMenuようにマウスのリリースイベントを手動で処理するように、のサブクラスを作成して topMenu にすることができます。

void CustomMenu::mouseReleaseEvent(QMouseEvent *event) {

    QAction *const actionAtEvent = actionAt(event->pos());

    if (actionAtEvent)
        actionAtEvent->trigger();

    QMenu::mouseReleaseEvent(event);
}

元の、役に立たない回答:

QMenu::menuAction()を使用して関連付けを取得しQAction、シグナルを接続すると役立つ場合があります。

于 2014-08-08T06:45:00.047 に答える