【发布时间】:2018-07-21 19:20:11
【问题描述】:
我正在学习在 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.
大概是因为我强行关闭了终端。我真的很想弄清楚为什么它没有将字符串打印到终端并干净地退出。
我按回车后的终端(预先空白):
【问题讨论】:
-
我认为我们确实需要查看所有项目文件。您是如何创建项目的:QtCreator 还是使用 qmake 的命令行?
-
@Marker 我在 QtCreator 中创建了项目,作为 Qt 控制台应用程序
-
@Marker 不确定您指的是什么其他文件。.pro 文件的其余部分仅列出了 main.cpp 源,并且在使用不推荐使用的东西时可以选择警告
-
您的应用程序没有按照您预期的方式终止,因为您调用了
a.exec()——它正在等待处理事件。 -
这样你并没有真正制作一个 Qt 应用程序..当你 GET RID of a.exec() ...然后也得到红色的
QCoreApplication a(argc, argv);..你最终得到一个c++main()带有几个命令.. 在 Qt 实践中也是使用qDebug()打印到终端.. 这应该可以解决您的第一个问题
标签: c++ qt c++11 qt-creator terminator