qt:qtableWidget的上下文菜单(qmenu)参考
题
我想在我的上下文菜单中添加一个子菜单,该子菜单是这样创建的:
self.widget_alignment.setContextMenuPolicy(Qt.ActionsContextMenu)
widget_alignment在哪里 QTableWidget.
我创建了一个新的qmenu实例:
exchange_bases_menu = QMenu(self.widget_alignment)
添加了一些动作,我找到了一种方法 qaction qmenu.addmenu(self,qmenu菜单)
但是我没有看到对self.widget_alignment的默认上下文菜单的任何引用。此外,此代码:
self.widget_alignment.addMenu(exchange_bases_menu)
给了我:qtableWidget对象没有属性addMenu。
如何将子菜单添加到默认上下文菜单中?
解决方案
根据文档,当 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 );
在没有自己尝试的情况下,我希望这将在为小部件生成的上下文菜单的底部添加一个“具有子菜单”选项,并将您创建的子菜单作为子菜单所示。
其他提示
在MouseReleaseEvent中使用Qmenu的popup()呢?
if (pEvent->button() == Qt::RightButton)
{
QMenu menu;
menu.addAction(action1);
menu.addAction(action2);
menu.popup(pEvent->globalPos(),action1);
}
不隶属于 StackOverflow