У меня довольно конкретная ситуация. Я хочу, чтобы поместить QAction
в QToolbar
и достичь следующее поведение:Как программно закрыть QMenu
- Checkable
QAction
с иконкой. - Классическая стрелка на правой стороне, которая используется для отображения меню
- При нажатии на эту стрелку мой
QDialog
РЕКОМЕНДУЕМЫМ на экране вместоQMenu
-как один
появляется Теперь я немного запутался с реализацией всех все это вместе.
На данный момент я создал QAction
, добавив его на панель инструментов, а также создал пустой QMenu
, потому что у меня не было понятия, как добавить «выпадающий список» в другую сторону.
Итак, я также подключил свой слот к QMenu
aboutToShow()
сигнал, и теперь я могу создать свой диалог и exec()
он перед QMenu
показывает. Но вот основная проблема: после того, как я сделал все с моим диалогом, нажмите кнопку OK
QMenu
, пытаясь появиться, но поскольку он пуст, он ничего не показывает, и дальнейшие действия становятся доступными только после того, как я щелкнул левой кнопкой мыши, чтобы «закрыть» это меню.
Есть ли способ заставить QMenu
не показывать или могут наследовать от QMenu
и reimplemnt его поведения (я попытался сделать такой трюк с exec()
show()
popup()
методов QMenu
после подклассов от него, но ни один из них не является когда появляется меню на экране)?
У вас там утечка памяти. Вы должны вызывать 'QMenu (parent)' в инициализации вашего конструктора. –
Спасибо большое! Я абсолютно забыл об этой вещи – tema
@SaZ странные вещи, происходящие сейчас: в Windows это работает отлично, но в меню закрытия Linux-меню заставляет замолчать любую панель инструментов. Может быть, я что-то забыл? – tema