我对此感到困惑: 我使用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中?
答案 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上你总是stderr
和stdout
和stdin
同样的方式,并且GUI不会改变它。在Windows上,它甚至可以为GUI应用程序启用控制台。