理解closeEvent的两个代码之间的区别

时间:2016-04-18 09:02:35

标签: qt

正如我已经提到过这个堆栈溢出问题线程this Stack overflow question thread,我想了解两个代码之间的差异:

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)行的含义。有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

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

此处此功能未在QMainWindow中实现,仅在其超类QWidget中实现,您可以看到它只调用event->accept();source)。这意味着QMainwindow::closeEvent(e);e->accept();相同。