我使用QT Creator 2.4.0创建了一个QT应用程序。并创建了一个包含main()函数的main.cpp文件,如下所示:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Q_INIT_RESOURCE(MainResources);
MainWindow mainWindow;
mainWindow.show();
cout << "1n";
int retVal = app.exec();
cout << "2n";
return retVal;
}
当我执行这个函数时,couts"1"one_answers"2"根本没有显示。我希望在控制台输出中至少看到"1"。它们只有在我关闭主窗口后才会打印出来。因此,似乎app.exec()直到主窗口关闭才执行。。。
1-有人能解释一下吗?
当我尝试从命令行执行此应用程序时(应用程序是静态构建的)该调用在我运行application.exe文件后立即返回,并且不等待主窗口关闭。
2-有没有办法让应用程序等待主窗口关闭?
感谢
app.exec()
是一个阻塞函数(它启动Qt事件循环),直到应用程序的最后一个窗口关闭后才会返回。
由于缓冲问题,您可能确实看不到"1"。请改用qDebug() << "1"
。
很可能标准输出被缓冲,因此"1"可能实际上被打印但没有被刷新。您必须刷新标准输出才能使其在正确的时间出现。或者你可以打印到cerr,这可能是没有缓冲的。
您指示程序在第一种情况下(从QtCreator?)正常运行,但没有您期望的控制台输出;在第二种情况下,直接从控制台运行,程序退出而不显示窗口?我想说,您正在运行两个不同的可执行程序。