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 に答える