Я смущен по этому поводу:
Я использую 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 странна, так как графические приложения по умолчанию не имеют консоли.
Это всегда раздражало меня, и я всегда использовал выходной файл для отладки.
Если вы хотите получить консоль, это можно исправить: Как написать на консоль в приложении с графическим интерфейсом
Visual Studio имеет дополнительную консоль отладки, которая предназначена для отслеживания результатов отладки.
Это не та консоль, на которой вы печатаете и читаете ввод. Вы можете настроить его на использование стандартной консоли, но цель не в этом.
qDebug()
в основном используется для отображения информации о том, что происходит во время работы приложения с графическим интерфейсом.
Поэтому, когда вы делаете действие и видите только некоторую реакцию, вы можете «отследить», что происходит внутри qDebug()
заявления о том, что происходит, не прерывая выполнение GUI.
смотрите здесь для получения дополнительной информации: http://doc.qt.io/qt-5/debug.html#warning-and-debugging-messages
Вам нужно добавить console
вариант вашего проекта Qt. Предполагая, что вы используете QMAKE, добавьте это в ваш .pro файл:
CONFIG += console
Ссылка: http://doc.qt.io/qt-5/qmake-variable-reference.html#config
Я думаю, это не влияет на другие платформы, кроме Windows (на Unix у вас всегда есть stderr
а также stdout
а также stdin
точно так же и наличие GUI не меняет это). В Windows это позволяет использовать консоль даже для приложений с графическим интерфейсом.