【问题标题】:How to remove standart menuitem from QTextEdit context menu如何从 QTextEdit 上下文菜单中删除标准菜单项
【发布时间】:2011-10-16 07:17:45
【问题描述】:

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

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

TIA。

【问题讨论】:

    标签: python qt pyqt pyside


    【解决方案1】:

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

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

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

    【讨论】:

    【解决方案2】:

    欢迎来到 pyside! :-)

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-14
      • 2013-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多