QMenu exec для возврата по клику QMenu (вместо QAction)

Я создаю меню, и я хотел бы иметь возможность нажать на оба QAction а также QMenu Предметы.

При беге execничего не произойдет, если я нажму на QMenu, Даже если я добавлю действие в QMenu,

Есть ли способ сделать это?

Вот что я попробовал:

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

1 ответ

РЕДАКТИРОВАТЬ:

я не знаю почему exec() делает его другим, но для обхода вы можете создать подкласс QMenu быть вашим topMenu, чтобы он обрабатывал событие отпускания мыши вручную, например так:

void CustomMenu::mouseReleaseEvent(QMouseEvent *event) {

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

    if (actionAtEvent)
        actionAtEvent->trigger();

    QMenu::mouseReleaseEvent(event);
}

Оригинальный, бесполезный ответ:

Это может помочь вам использовать QMenu::menuAction(), чтобы получить связь QAction и подключите его сигналы.

Другие вопросы по тегам