Название: Контекстное меню Отправлено: ecspertiza от Июль 21, 2009, 14:16 Вобщем есть такая тема, в QMainWindow создается меню(QMenu), вот хотелось бы точно такое же создать на виджете,
делаю вот так QWidget::addActions(QMenu::actions()) все замечательно создает, но есть одно но нужно отлавливать момент всплытия меню(во сказал), то есть тот самый момент когда оно появляется и на виджете и в главном меню, я знаю что у меню есть сигнал aboutToShow(), в этом случае оно работает только при всплытии в главном меню. если делаю вот так QWidget::addAction(QMenu::menuAction()) то работает всё нормально, но при этом, контекстное меню выглядит плохо, оно грубо говоря вместе с заголовком, а нужно без него. Подскажите чёго делать, как отловить момент всплытия меню и в главном окне и на виджете, и желатнельно что бы это было одно и тоже QMenu. такое бывает? Название: Re: Контекстное меню Отправлено: ufna от Июль 21, 2009, 14:33 в этом виджете ловишь contextMenuEvent, в нем создаешь новое QMenu, пичкаешь его экшнами что заслал и все.
Код
Название: Re: Контекстное меню Отправлено: uriel от Июль 21, 2009, 14:35 С виджетом можно проще - просто переопределить contextMenuEvent или повесить фильтр событий. Тогда можно будет использовать один и тот же объект меню сразу в обоих местах и ловить всплытие в aboutToShow.
Название: Re: Контекстное меню Отправлено: MoPDoBoPoT от Июль 21, 2009, 14:42 1. Создаешь меню (yourMenu), добавляешь в него все необходимые тебе экшены и хранишь его как член класса.
2. Добавляешь меню в MainWindow. 3. Для необходимого тебе виджета (yourWidget) используешь QWidget::setContextMenuPolicy(Qt::CustomContextMenu) 4. Создаешь слот с тамким содержимым: Код: void slotCntxMenu(const QPoint &point) В итоге имеем одну менюшку. Название: Re: Контекстное меню Отправлено: ecspertiza от Июль 21, 2009, 15:43 Всем спасибо разобрался, MoPDoBoPoT нечто подобное и сделал как ты описал.
|