【发布时间】:2022-11-25 20:48:09
【问题描述】:
覆盖virtual functions of QtWidgets时,在什么情况下我应该调用super().__init__()?在哪些情况下它的立场会产生影响?
例子:
class Window(QtWidgets.QMainWindow):
def keyPressEvent(self, event: QtGui.QKeyEvent) -> None:
"""Variant A: Top"""
super().__init__(event)
# my code
def mousePressEvent(self, event: QtGui.QMouseEvent) -> None:
"""Variant B: Bottom"""
# my code
super().__init__(event)
def showEvent(self, event: QtGui.QShowEvent) -> None:
"""Variant C: Without"""
# my code
...
我在问这个,因为我注意到在我成长的代码中我有所有三个变体,而且我没有注意到任何不起作用或有任何区别。是否有任何我可以/应该遵循的一般规则或最佳实践?
【问题讨论】:
-
@Alexander,这基本上是我的问题。我可以/应该删除它们吗?这是真的吗全部事件方法?非事件方法呢?
-
@Alexander,老实说,我不记得我为什么把它们放在那里。大概我在哪里见过它。这是我的第一个 Qt 项目。对我来说,回答似乎也不是微不足道的。例如。如果父类方法对事件做了一些有用/重要的事情怎么办?我怎么会知道呢?
-
如果它像这样简单:“构造函数尽早需要它,将它留在所有其他方法中”,那对我来说将是一个很好的答案!