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),并且是空白的,带有一个闪烁的光标。要让字符串出现,我必须按&lt;Enter&gt;。字符串出现,但程序没有结束。我没有在终端中收到“按回车键关闭窗口”类型的消息,表明程序已结束,我必须“手动”关闭终端。此外,在“应用程序输出”窗口中,它显示:

/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:将字符串打印到终端的最佳方式是啥?的主要内容,如果未能解决你的问题,请参考以下文章

安全地将 printf 打印到字符串的最佳方法? [复制]

QtCreator如何将Application Output显示到Text Edit控件中

如何在不重新打印的情况下更新终端中的打印消息

终端打印

如何将彩色文本输出到 Linux 终端?

不同的运行时行为取决于程序的启动方式(终端与 Qt Creator)