'QPoint' object has no attribute 'globalPos'
时间: 2023-07-24 18:14:15 浏览: 99
抱歉,我之前的代码中有一个错误。QPoint确实没有globalPos属性。您可以使用mapToGlobal方法将鼠标的位置从局部坐标转换为全局坐标。下面是修正后的代码:
```python
from PyQt5.QtWidgets import QApplication, QTextBrowser, QMenu, QAction
from PyQt5.QtCore import Qt
class CustomTextBrowser(QTextBrowser):
def __init__(self, parent=None):
super().__init__(parent)
self.setContextMenuPolicy(Qt.CustomContextMenu)
self.customContextMenuRequested.connect(self.showContextMenu)
def showContextMenu(self, pos):
globalPos = self.mapToGlobal(pos)
menu = QMenu(self)
rebuildAction = QAction("重建菜单", self)
rebuildAction.triggered.connect(self.rebuildMenu)
menu.addAction(rebuildAction)
menu.exec_(globalPos)
def rebuildMenu(self):
# 在此处添加重建菜单的代码
print("重建菜单")
if __name__ == '__main__':
app = QApplication([])
textBrowser = CustomTextBrowser()
textBrowser.show()
app.exec_()
```
现在,代码应该能够正确地将右击事件的位置转换为全局坐标,并显示自定义菜单。不要忘记在rebuildMenu方法中添加您想要执行的重建菜单的代码。
阅读全文