当我必须在 QT 的事件方法中调用 base class 时?
When I have to call base class in event methods in QT?
我有 myWidget class。他的基础class是QWidget。我想在 myWidget class 中使用事件方法,例如 keyPressEvent(QKeyEvent *event)
、paintEvent(QPaintEvent *event)
或 mousePressEvent(QMouseEvent *event)
.
我不知道在这个方法中什么时候必须调用base class 什么时候不需要调用base class。当我必须做的时候:
void myWidget::mousePressEvent(QMouseEvent *event)
{
...
QWidget::mousePressEvent(event); // <----- this line
}
?
这里:https://doc.qt.io/qt-5/qwidget.html#keyPressEvent 当我们在应用程序中有弹出窗口小部件时,有一个信息可能很重要。但这只是调用 base class 的原因吗?我的应用程序中没有弹出窗口小部件,所以我可以调用 base class,但我不必这样做?
此处:https://doc.qt.io/qt-5/qwidget.html#paintEvent 没有任何关于调用和非调用基础之间差异的信息 class。所以在 paintEvent 中,无论我是否调用 base class?
这将取决于基础 class 是否在这些方法中实现任何逻辑,例如,如果您重写 QLineEdit 的 keyPressEvent 方法并且您不调用 QLineEdit::keyPressEvent(event)
那么您就不会'无法获得默认行为,与其他小部件的 paintEvent 相同。
总之,如果您希望默认行为继续,您必须调用基本方法。
我有 myWidget class。他的基础class是QWidget。我想在 myWidget class 中使用事件方法,例如 keyPressEvent(QKeyEvent *event)
、paintEvent(QPaintEvent *event)
或 mousePressEvent(QMouseEvent *event)
.
我不知道在这个方法中什么时候必须调用base class 什么时候不需要调用base class。当我必须做的时候:
void myWidget::mousePressEvent(QMouseEvent *event)
{
...
QWidget::mousePressEvent(event); // <----- this line
}
?
这里:https://doc.qt.io/qt-5/qwidget.html#keyPressEvent 当我们在应用程序中有弹出窗口小部件时,有一个信息可能很重要。但这只是调用 base class 的原因吗?我的应用程序中没有弹出窗口小部件,所以我可以调用 base class,但我不必这样做?
此处:https://doc.qt.io/qt-5/qwidget.html#paintEvent 没有任何关于调用和非调用基础之间差异的信息 class。所以在 paintEvent 中,无论我是否调用 base class?
这将取决于基础 class 是否在这些方法中实现任何逻辑,例如,如果您重写 QLineEdit 的 keyPressEvent 方法并且您不调用 QLineEdit::keyPressEvent(event)
那么您就不会'无法获得默认行为,与其他小部件的 paintEvent 相同。
总之,如果您希望默认行为继续,您必须调用基本方法。