【发布时间】:2020-09-26 16:08:00
【问题描述】:
我有一个带有 FramelessWindowHint 的窗口。 我还有一个附加到 QMainWindow 的 QMenuBar。 我想在用户单击菜单栏时获取鼠标按下事件。我想我可以像这样创建一个新课程:
class menubarclass(QtWidgets.QMenuBar):
def __init__(self, parent):
super().__init__(parent)
然后在该类中重新实现 mousePressEvent 函数。
def mousePressEvent(self, event):
print("menubar clicked")
问题是重新实现此功能似乎覆盖了菜单栏中菜单/操作的功能 - 我无法单击它们。
所以我想我需要装饰 mousePressEvent 而不是重新实现它,但我不知道该怎么做,因为这是一个事件处理程序。
简而言之,我不想重写 mousePressEvent 处理程序,而是向它添加额外的代码,如果这有意义的话?
【问题讨论】:
-
如果您只是在实现中调用基本实现 (
super().mousePressEvent(event)),它应该可以工作。如果没有,请提供minimal, reproducible example,以便我们了解发生了什么。 -
成功了!谢谢。
标签: python python-3.x qt pyqt pyqt5