我想在我的上下文菜单中添加一个子菜单,该子菜单是这样创建的:

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);
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top