我想調整QTextEdit中的上下文菜單。我成功地訪問並顯示了默認菜單,其代碼如下:在QTextEdit中自定義位置敏感的上下文菜單
class LinkTextBrowser(QTextBrowser):
def contextMenuEvent(self, event):
menu = self.createStandardContextMenu(event.pos())
# do stuff to menu here
menu.popup(event.globalPos())
但是,這對位置敏感的點擊無效。有問題的情況是QTextBrowser的右鍵菜單中的「複製鏈接位置」項,該菜單僅在右鍵單擊鏈接時才啓用,原因很明顯。我無法將它啓用。我懷疑我通過錯誤的位置來創建標準上下文菜單,但我無法弄清楚它的正確位置。
我已經嘗試event.globalPos()和event.pos(),都沒有工作。我也看了QTextEdit的源代碼,但沒有得到任何地方。它期望什麼位置?
編輯:更新:看來問題是在TextBrowser中滾動;如果我滾動到窗口的頂部並使用event.pos()它的行爲。我還沒有工作代碼,但糾正滾動是解決方案。 (具體來說,我想斷開復制鏈接位置操作發出的信號並將其連接到我自己的函數,這樣我就可以在將URL複製到剪貼板之前調整它的URL,從而使我可以在創建鏈接之前絕對地等等複製,並且我沒有特別的願望來重新編寫工作位)。
它需要在QTextEdit的內容上的位置,不幸的是,不是一個全球性的位置。 – Sam 2011-12-30 13:51:16