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
и подключите его сигналы.