我想在我的上下文菜单中添加一个子菜单,它是这样创建的:
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。
如何将我的子菜单添加到默认上下文菜单中?
答案 0 :(得分: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 );
如果不自己尝试,我希望这会在为窗口小部件生成的上下文菜单的底部添加一个“有子菜单”选项,并将您创建的子菜单显示为子菜单。
答案 1 :(得分:0)
如何在MouseReleaseEvent中使用QMenu的popup()?
if (pEvent->button() == Qt::RightButton)
{
QMenu menu;
menu.addAction(action1);
menu.addAction(action2);
menu.popup(pEvent->globalPos(),action1);
}