QT:来自QTableWidget的上下文菜单(QMenu)引用

时间:2009-12-08 14:01:00

标签: qt qt4 pyqt pyqt4

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

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。

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

2 个答案:

答案 0 :(得分:1)

根据文档,当QWidget设置为具有操作上下文菜单类型时,窗口小部件将基于为窗口小部件设置的操作列表构建上下文菜单。要修改操作列表,您可以致电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 );

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

答案 1 :(得分:0)

如何在MouseReleaseEvent中使用QMenu的popup()?

if (pEvent->button() == Qt::RightButton)
{
    QMenu menu;
    menu.addAction(action1);
    menu.addAction(action2);
    menu.popup(pEvent->globalPos(),action1);
}