2009-12-08 112 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,insertActionremoveAction。所以,我希望你可以做這樣的事情(在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); 

沒有想我自己,我希望這一個「有子菜單」選項添加到爲生成的上下文菜單的底部該小部件與您創建的子菜單一起顯示爲子菜單。

+0

謝謝cjhuitt! 這對我有什麼工作(在Python): act_p =的QAction( 「有子菜單」,self.widget_alignment) submenu_p = QMenu(self.widget_alignment) #項目添加到子菜單 SA =的QAction(」子菜單行動」,submenu_p) submenu_p.addAction(SA) act_p.setMenu(submenu_p) self.widget_alignment.addAction(act_p) – 2009-12-09 08:36:48

0

如何在MouseReleaseEvent中使用QMenu的popup()?

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