2009-12-08 99 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); 
}