2

所以,我是 PySide 和 QT 的新手,我想知道如何从 QTextEdit 标准上下文菜单中删除 menuitem(不管是哪种(撤消、重做、复制、粘贴等))。

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

TIA。

4

2 回答 2

3

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

修改您认为合适的菜单,然后使用QPoint传递给信号处理程序的方法显示它,如下所示:

menu.exec_(textedit.viewport().mapToGlobal(point))
于 2011-10-15T23:17:45.820 回答
2

欢迎来到pyside!:-)

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

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

我建议创建自己的自定义上下文的原因是因为 qmenu 不能作为 qtextedit 上的持久对象真正访问。它根据单击时的上下文动态构建。我不确定是否有一种方法可以重载以在显示之前访问 qmenu。我认为你能做的最好的就是完整地定义你自己的。

于 2011-10-15T19:19:13.610 回答