Qt中的输出如何工作

时间:2016-10-17 14:32:58

标签: c++ qt console-application qt5.7

我对此感到困惑: 我使用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中?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

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

qDebug()主要用于显示运行GUI应用程序时发生的最新信息。

因此,当您执行某个操作并且只看到一些反应时,您可以“跟踪”内部发生的事情,qDebug()语句在不中断GUI执行的情况下发生的事情。

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

答案 2 :(得分:0)

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

CONFIG += console

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

它对Windows以外的其他平台没有影响(在Unix上你总是stderrstdoutstdin同样的方式,并且GUI不会改变它。在Windows上,它甚至可以为GUI应用程序启用控制台。