2009-12-08 3 views
0

Я хочу добавить подменю в моем контекстном меню, которое создается следующим образом:QT: Контекстное меню (QMenu) справка из QTableWidget

self.widget_alignment.setContextMenuPolicy(Qt.ActionsContextMenu) 

где widget_alignment является QTableWidget.

Я создал новый экземпляр QMenu:

exchange_bases_menu = QMenu(self.widget_alignment) 

добавлены некоторые действия, и я нашел способ QAction QMenu.addMenu (self, QMenu menu)

, но я не вижу каких-либо ссылок в контекстное меню по умолчанию для self.widget_alignment. Кроме того, этот код:

self.widget_alignment.addMenu(exchange_bases_menu) 

дал мне: объект QTableWidget не имеет атрибута addMenu.

Как добавить мое подменю в контекстное меню по умолчанию?

ответ

1

Согласно документации, когда QWidget установлен, чтобы иметь тип меню действия контекста, виджет будет строить контекстное меню на основе списка действий, установленные для виджета. Чтобы изменить список действий, вы можете позвонить addAction, insertAction или removeAction. Так что я бы ожидать, что Вы могли бы сделать что-то вроде этого (в C++):

QAction *act_p = new QAction("Has Submenu", widget_alignment); 
QMenu *submenu_p = new QMenu(act_p); 
// Add items to the submenu 
act_p->setMenu(submenu_p); 
widget_alignment->addAction(act_p); 

Не пытаясь это сам, я бы ожидать, что это добавить «Has Подменю» вариант в нижней части контекстного меню, которое создается для виджет, с подменю, созданным вами в качестве подменю.

+0

Спасибо cjhuitt! Это то, что работает для меня (в Python): act_p = QAction ("Имеет субменю", self.widget_alignment) submenu_p = QMenu (self.widget_alignment) # Добавление элементов в подменю са = QAction (» Подменю action ", submenu_p) submenu_p.addAction (sa) act_p.setMenu (submenu_p) self.widget_alignment.addAction (act_p) –

0

Как насчет использования всплывающего окна QMenu() в MouseReleaseEvent?

if (pEvent->button() == Qt::RightButton) 
{ 
    QMenu menu; 
    menu.addAction(action1); 
    menu.addAction(action2); 
    menu.popup(pEvent->globalPos(),action1); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^