所以,我是 PySide 和 QT 的新手,我想知道如何从 QTextEdit 标准上下文菜单中删除 menuitem(不管是哪种(撤消、重做、复制、粘贴等))。
或者告诉我一种获取此上下文菜单的 QMenu 对象的方法。然后我可以将 removeAction 方法应用于 menuitem。
TIA。
要完全控制上下文菜单,首先使用QWidget.setContextMenuPolicy将上下文菜单策略更改为Qt.CustomContextMenu
. 然后将处理程序连接到QWidget.customContextMenuRequested信号。在处理程序中,您可以使用QTextEdit.createStandardContextMenu方法获取标准上下文菜单对象。
修改您认为合适的菜单,然后使用QPoint
传递给信号处理程序的方法显示它,如下所示:
menu.exec_(textedit.viewport().mapToGlobal(point))
欢迎来到pyside!:-)
由于 QTextEdit 继承 QWidget 您可能希望将上下文菜单策略设置为自定义,然后为您提供自己的弹出菜单
我建议创建自己的自定义上下文的原因是因为 qmenu 不能作为 qtextedit 上的持久对象真正访问。它根据单击时的上下文动态构建。我不确定是否有一种方法可以重载以在显示之前访问 qmenu。我认为你能做的最好的就是完整地定义你自己的。