QtCreator:将字符串打印到终端的最佳方式是啥?
Posted
技术标签:
【中文标题】QtCreator:将字符串打印到终端的最佳方式是啥?【英文标题】:QtCreator: What is the best way to print strings to the terminal?QtCreator:将字符串打印到终端的最佳方式是什么? 【发布时间】: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()
打印到终端.. 这应该可以解决您的第一个问题
【参考方案1】:
这对于 Qt 控制台应用程序来说是正常的。它正在运行一个消息循环,并且正在做它应该做的事情。 要将文本发送到控制台,您可以使用 std::cout、qout 或 qDebug()。后者用于调试。更多信息可以在这里找到。它还包含您遇到的陷阱。 Qt console Application
【讨论】:
以上是关于QtCreator:将字符串打印到终端的最佳方式是啥?的主要内容,如果未能解决你的问题,请参考以下文章