0

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

4

3 回答 3

3

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

于 2016-10-17T14:37:28.150 回答
1

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

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

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

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

有关更多信息,请参见此处:http: //doc.qt.io/qt-5/debug.html#warning-and-debugging-messages

于 2016-10-17T14:41:46.837 回答
0

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

CONFIG += console

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

我认为它对除 Windows 之外的其他平台没有影响(在 Unix 上,你总是有并且stderr同样的方式,拥有 GUI 并不会改变这一点)。在 Windows 上,它甚至可以为 GUI 应用程序启用控制台。stdoutstdin

于 2016-10-17T15:08:23.803 回答