Qt 中的输出如何工作

how the outputs in Qt works

我对此感到困惑: 我用 Visual Studio 2013

当我为 windows 创建项目时:

当我使用 qDebug() 时,输出转到某些控制台输出。 这是我可以用来输入的控制台吗?或者我需要来自 Qt+=console 的那个 这段代码在那里不起作用,所以我想如果我想使用它我需要控制台应用程序。

代码 1

    QTextStream out(stdout);
        out << "Please enter login username and password\n";
        out.flush();

然而

当我为 linux 创建项目时:

我不需要那个控制台应用程序,它运行良好,例如 code1 可以正常运行...我很困惑为什么?为什么在 linux 上有效但在 windows 上无效?

这是因为 Windows 这样很奇怪,因为图形应用程序默认没有控制台。 这总是让我很恼火,我总是使用文件输出来调试。 如果你真的想得到一个控制台,这可能会解决它:How to write to the console in a GUI application

Visual Studio 有一个额外的调试控制台,用于跟踪调试输出。

这与您打印和读取输入的控制台不同。您可以将它设置为使用标准控制台,但这不是这个的目的。

qDebug() 主要用于在 运行 GUI 应用程序时显示有关正在发生的事情的信息。

因此,当您执行一个操作并且只看到一些反应时,您可以 "trace" 使用 qDebug() 语句在内部发生了什么 在不中断 GUI 执行的情况下发生了什么。

查看此处了解更多信息:http://doc.qt.io/qt-5/debug.html#warning-and-debugging-messages

您需要向您的 Qt 项目添加 console 选项。假设您正在使用 qmake,将其添加到您的 .pro 文件中:

CONFIG += console

参考:http://doc.qt.io/qt-5/qmake-variable-reference.html#config

除了 Windows 我认为它对其他平台没有影响(在 Unix 上你总是有 stderrstdoutstdin 相同的方式并且有一个 GUI不会改变)。在 Windows 上,它甚至为 GUI 应用程序启用控制台。