QTextEditでコンテキストメニューを調整しようとしています。QTextEditで場所依存のコンテキストメニューをカスタマイズする
class LinkTextBrowser(QTextBrowser):
def contextMenuEvent(self, event):
menu = self.createStandardContextMenu(event.pos())
# do stuff to menu here
menu.popup(event.globalPos())
ただし、これは場所を特定するためのクリックでは機能しません。次のコードを使用して、デフォルトのメニューにアクセスして表示することに成功しました。問題のケースは、QTextBrowserの右クリックメニューの「リンク先のコピー」項目です。これは、明示的な理由から、リンクを右クリックした場合にのみ有効になります。私はこれを有効にすることはできません。私はCreateStandardContextMenuに間違った位置を渡していると思われますが、私はそれをフィードする正しい位置を特定できません。
私は)(event.globalPos()とevent.posの両方を試してみましたが、どちらも仕事の。私はQTextEditのソースコードも調べましたが、どこにも行きませんでした。どのポジションを期待していますか?
編集:更新:それは問題がTextBrowserでスクロールで表示されます。ウィンドウの一番上までスクロールしてevent.pos()を使用すると、動作します。私はまだ作業コードを持っていませんが、スクロールの修正は解決策です。
(具体的には、「リンク先のコピー」アクションによって生成された信号を切断し、それを自分の関数に接続して、クリップボードにコピーする前にURLを調整してから、コピー、およびIは、再書き込み作業ビットへの特段の欲求を持っていません。)
それはQTextEditの内容上の位置、残念ながら、ない地球上の位置を必要とします。 – Sam