【发布时间】:2011-10-16 07:17:45
【问题描述】:
所以,我是 PySide 和 QT 的新手,想知道如何从 QTextEdit 标准上下文菜单中删除 menuitem(不管是哪种(撤消、重做、复制、粘贴等))。
或者告诉我一种获取此上下文菜单的 QMenu 对象的方法。然后我可以将 removeAction 方法应用于 menuitem。
TIA。
【问题讨论】:
所以,我是 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。我认为你能做的最好的就是完整地定义你自己。
【讨论】: