将事件传播到QT中最顶部的Widget / QMainWindow的最佳方法是什么?

What is the best way to propagate event to top most Widget/QMainWindow in QT

本文关键字:Widget QMainWindow 方法 是什么 最佳 顶部 传播 事件 QT      更新时间:2023-10-16

我有一种分层的架构,其中一个小部件在另一个小部件中。最上面的对象是QMainWindow,可以有任意数量的内部小部件(一个在另一个内部)。示例:- 主窗口是 widget1 的父级,widget 1 是 widget2 的父级。等等..

现在我需要在最上面的窗口中处理最新子项的关闭事件。我想知道在QT 5.7中实现它的最佳方法。

您可能希望对 QMainWindow 进行子类化并覆盖 childEvent 函数:

http://doc.qt.io/qt-5/qobject.html#childEvent

将允许您执行以下操作:

class TarunsMainWindow : QMainWindow {
protected:
    void childEvent(QChildEvent event) override {
        if (event->type() == QEvent::ChildRemoved) {
            // do something special
        }
        QMainWindow::childEvent(event);
    }
}