0

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

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。

如何将我的子菜单添加到默认上下文菜单?

4

2 回答 2

1

根据文档,当 aQWidget设置为具有操作上下文菜单类型时,小部件将根据为小部件设置的操作列表构造一个上下文菜单。要修改操作列表,您可以调用addActioninsertActionremoveAction。所以我希望你可以做这样的事情(在 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 );

如果不亲自尝试,我希望这会在为小部件生成的上下文菜单的底部添加一个“有子菜单”选项,您创建的子菜单显示为子菜单。

于 2009-12-08T17:13:05.490 回答
0

在 MouseReleaseEvent 中使用 QMenu 的 popup() 怎么样?

if (pEvent->button() == Qt::RightButton)
{
    QMenu menu;
    menu.addAction(action1);
    menu.addAction(action2);
    menu.popup(pEvent->globalPos(),action1);
}
于 2009-12-08T16:55:06.823 回答