【问题标题】:QMenuBar reimplementing MousePressEventQMenuBar 重新实现 MousePressEvent
【发布时间】: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


【解决方案1】:

Musicamante 为我提供了我需要的答案

如果您只是在您的实现中调用基本实现 (super().mousePressEvent(event)),它应该可以工作。如果没有,请提供一个最小的、可重现的示例,以便我们了解发生了什么。 – musicamante 2 分钟前

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多