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

时间:2017-01-02 22:04:50

标签: c++ qt

我有一种分层的架构,其中一个Widget在另一个内部。 最顶层的对象是QMainWindow,可以有任意数量的内部小部件(一个在另一个内部)。 示例: - mainwindow是widget1的父级,widget1是widget2..so的父级...

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

1 个答案:

答案 0 :(得分:0)

您可能希望子类化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);
    }
}