как работают выходы в Qt

Я смущен по этому поводу:
Я использую 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

Решение

Это связано с тем, что Windows странна, так как графические приложения по умолчанию не имеют консоли.
Это всегда раздражало меня, и я всегда использовал выходной файл для отладки.
Если вы хотите получить консоль, это можно исправить: Как написать на консоль в приложении с графическим интерфейсом

3

Другие решения

Visual Studio имеет дополнительную консоль отладки, которая предназначена для отслеживания результатов отладки.

Это не та консоль, на которой вы печатаете и читаете ввод. Вы можете настроить его на использование стандартной консоли, но цель не в этом.

qDebug() в основном используется для отображения информации о том, что происходит во время работы приложения с графическим интерфейсом.

Поэтому, когда вы делаете действие и видите только некоторую реакцию, вы можете «отследить», что происходит внутри qDebug() заявления о том, что происходит, не прерывая выполнение GUI.

смотрите здесь для получения дополнительной информации: http://doc.qt.io/qt-5/debug.html#warning-and-debugging-messages

1

Вам нужно добавить console вариант вашего проекта Qt. Предполагая, что вы используете QMAKE, добавьте это в ваш .pro файл:

CONFIG += console

Ссылка: http://doc.qt.io/qt-5/qmake-variable-reference.html#config

Я думаю, это не влияет на другие платформы, кроме Windows (на Unix у вас всегда есть stderr а также stdout а также stdin точно так же и наличие GUI не меняет это). В Windows это позволяет использовать консоль даже для приложений с графическим интерфейсом.

0
По вопросам рекламы [email protected]