如何从QTextEdit上下文菜单中删除标准menuitem

时间:2011-10-15 19:04:06

标签: python qt pyqt pyside

所以,我是PySide和QT的新手,想知道如何从QTextEdit标准上下文菜单中删除menuitem(无论是什么类型的(撤消,重做,复制,粘贴等))。 / p>

或者告诉我一种获取此上下文菜单的QMenu对象的方法。然后我可以将removeAction方法应用于menuitem。

TIA。

2 个答案:

答案 0 :(得分:3)

要完全控制上下文菜单,请先使用QWidget.setContextMenuPolicy将上下文meu策略更改为Qt.CustomContextMenu。然后将处理程序连接到QWidget.customContextMenuRequested信号。在处理程序中,您可以使用QTextEdit.createStandardContextMenu方法获取标准上下文菜单对象。

根据需要修改菜单,然后使用传递给信号处理程序的QPoint显示它,如下所示:

menu.exec_(textedit.viewport().mapToGlobal(point))

答案 1 :(得分:2)

欢迎来到pyside! : - )

由于QTextEdit继承了QWidget,您可能希望将上下文菜单策略设置为自定义,然后提供自己的弹出菜单

http://www.pyside.org/docs/pyside/PySide/QtGui/QWidget.html#PySide.QtGui.PySide.QtGui.QWidget.contextMenuPolicy

我建议创建自己的自定义上下文的原因是因为qmenu不能作为qtextedit上的持久对象实际访问。它的构建基于点击时的上下文。我不确定是否有一种方法可以在显示之前重载以获取对qmenu的访问。我认为你能做的最好的就是定义你自己的完整。