Qt 理解closeEvent两种代码之间的差异

Qt 理解closeEvent两种代码之间的差异,qt,Qt,由于我已经提到了这个堆栈溢出问题线程,我想了解两个代码之间的区别: void MyMainWindow::closeEvent(QCloseEvent *e) { foreach (QWidget *widget, QApplication::topLevelWidgets()) { if (widget != this) { // avoid recursion. widget->close(); }

由于我已经提到了这个堆栈溢出问题线程,我想了解两个代码之间的区别:

void MyMainWindow::closeEvent(QCloseEvent *e)
    {
        foreach (QWidget *widget, QApplication::topLevelWidgets()) {
        if (widget != this) { // avoid recursion.
            widget->close();
        }
     }
     e->accept();
}

void MyMainWindow::closeEvent(QCloseEvent *e)
{
    foreach (QWidget *widget, QApplication::topLevelWidgets()) {
        if (widget != this) { // avoid recursion.
            widget->close();
        }
     }
     e->accept();
    }
    QMainwindow::closeEvent(e);
}

我想知道行
QMainwindow::closeEvent(e)的含义;MyMainWindow::closeEvent(QCloseEvent*e)
在上述代码中。有人能帮我吗?

这一行只是显式地调用了超类函数。当您有不同的函数或数据成员声明时,您可以这样指定引用哪一个

在这里,这个函数不是在QMainWindow中实现的,只是在它的超类QWidget中实现的,您可以看到它只调用
event->accept()()。这意味着
QMainwindow::closeEvent(e)
e->accept()相同