在关闭主窗口之前,无法访问main()代码中的QT应用程序app.exc()



我使用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?)正常运行,但没有您期望的控制台输出;在第二种情况下,直接从控制台运行,程序退出而不显示窗口?我想说,您正在运行两个不同的可执行程序。

相关内容

  • 没有找到相关文章

最新更新