为什么在 Qt C++ 中关闭 main window 后打印消息?

Why messages printed after closing main window in Qt C++?

使用此代码

#include "mainwindow.h"
#include <QApplication>
#include <iostream>
#include <QDir>
#include <QTextStream>

int main(int argc, char *argv[]){
    QApplication a(argc, argv);

    QTextStream out(stdout);
    out << QDir::currentPath();
    std::cout << "Why is that?";

    MainWindow mainWindow;
    mainWindow.show();
    return a.exec();
}

只有在关闭我的应用程序的 Main Window 后才打印这两条消息,这是为什么? 我尝试调试,调试器认为他已经完成了这一行,但我没有看到任何消息。

extern std::ostream cout; 已缓冲,因此它可以选择何时将缓冲区刷新到 stdout。在您的情况下,它是在您的程序终止时执行的。

您可以使用 std::flush 告诉 std::ostream 刷新,例如:

std::cout << "Why is that?" << std::flush;