我正在学习在lubuntu 17.10上使用Qtcreator,并希望将一些输出打印到终端。但我遇到了问题,所以我将我的程序简化为一个基本的“Hello World”,只打印一个字符串到终端。目前,我正在使用以下代码:
#include <QCoreApplication>
#include <iostream>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
std::cout << "HELLO WORLD" << std::endl;
return a.exec();
}
我的.pro文件包含以下几行,它们似乎会影响终端的行为:
QT -= gui
CONFIG += c++11 console
我还勾选了运行设置中的“在终端中运行”选项。
这个构建没有问题。当我运行它时,终端弹出(我正在使用
terminator
),并且是空白的,有一个闪烁的光标。要让字符串出现,我必须按下<Enter>
。字符串出现了,但程序没有结束。我没有在终端中得到“按回车键关闭窗口”的消息类型,这表明程序已结束,我必须“手动”关闭终端。此外,在应用程序输出窗口中,它显示:/home/user/path_to_my_program crashed.
可能是因为我强制关闭了终端。我真的想弄清楚为什么它没有将字符串打印到终端并干净地退出。
按ENTER键后的终端(之前是空白的):
endl
会刷新缓冲区,或者您可以使用std::flush
。 - Retired Ninjaa.exec()
-- 它正在等待处理事件。 - G.M.a.exec()
时... 还要去掉QCoreApplication a(argc, argv);
.. 最后你得到的是一个带有几个命令的C++main()
函数.. 在Qt实践中,使用qDebug()
来打印到终端.. 这应该解决您的第一个问题。 - Mohammad Kanan