Символы кириллицы выводит некорректно. Как сделать чтобы выводился читабельный текст на русском языке? Тип приложения - не Qt, Qt Creator 4.5.0 основан на Qt 5.10.0. Win7.
|
Структура проекта. Основные типы
12.3 Консольный проект Qt. Вывод сообщений.
Несмотря на то, что Qt почти всегда рассматривают как инструментарий для создания программ с графическим интерфейсом, его также можно использовать и в таких программах, которые работают как фоновые процессы, а также в консольных проектах. Для нескольких следующих примеров мы будем использовать последний созданный нами в предыдущем разделе проект.
В таком консольном проекте можно использовать почти все привычные для Qt средства и классы. В следующих нескольких примерах мы рассмотрим работу с некоторыми важными типами Qt именно на примере консольного проекта. А пока что ограничимся только обзором средства, которое позволяет выводить в консоль сообщения и разнообразную информацию для отладки в процессе работы программы.
Для вывода информации в консольном проекте можно использовать все привычные средства стандартной библиотеки C++. Но в Qt для этого есть удобный инструмент — функция qDebug(). Рассмотрим пример её использования:
#include <QDebug> //Собственный тип данных — структура для комплексных чисел struct complex { double re; double im; }; //Определение потокового оператора для поддержки вывода собственного типа //complex с помощью qDebug() QDebug operator<<(QDebug dbg, const complex &c ) { dbg.nospace ( ) << " ( " << c.re << " + i * " << c.im << " ) "; return dbg.space ( ); } int main ( int lArg c, char * lArgv [ ] ) { //Вывод разнообразных типов данных qDebug ( ) << " Hello, " << " this is debug output "; qDebug ( ) << " Integer values : " << 1 << 10 << 100; qDebug ( ) <<" Doubles and floats : "<<.1 << .123 << 0.112345; qDebug ( ) << " Characters : " << " c " << " \ t " << " $ " << " \ n " << " newline "; qDebug ( ) << " Booleans : " << true << false; qDebug ( ) << " Pointers : " << lArgv; qDebug ( ) << " and much more..."; //Вывод собственного типа данных complex c; c.re = 0.2; c.im = 1.5; qDebug ( ) << " including custom types : " << c; return 0; }
После выполнения программы в консоли увидим текст:
Hello, this is debug output Integer values: 1 10 100 Doubles and floats: 0.1 0.123 0.112345 Characters: c $ newline Booleans: true false Pointers: 0x3278fc8 and much more... including custom types: (0.2 + i*1.5)
Кроме qDebug() существуют другие функции для вывода сообщений разного уровня. Описание и примеры этих функций рассмотрим в табл. 12.2.
Функция | Описание | Особенности | Пример |
---|---|---|---|
qDebug() | Вывод сообщений для отладки, разнообразной информации при работе программы. | Сообщения могут быть выключены с помощью специального макроопределения QT_NO_DEBUG_OUTPUT например, в файле проекта:
DEFINES += QT_NO_DEBUG_OUTPUT |
int error_num = 59; std::string error_string ( "uknown error" ); qDebug ( " result : % d , description : % s " , error_num, error_string . c_str ( ) ); __________________ #include <QDebug> ... qDebug ( )<<" result : "" << error_num <<" , description : " << error_string.c_str ( ); |
qWarning() | Вывод сообщений при работе программы. | Сообщения могут быть выключены с помощью специального макроопределения QT_NO_WARNING_OUTPUT
например, в файле проекта:
DEFINES += QT_NO_WARNING_OUTPUT |
qWarning ( " warning : % d , description : % s " , error_num, error_string .c_str ( ) ); __________________ #include <QDebug> ... qWarning ( )<<" warning : " <<error_num <<" , description : " << error_string.c_str ( ); |
qCritical() | Вывод сообщений о критических ошибках. |
qCritical ( " critical error : % d, description :% s " , error_num, error_string .c_str ( ) ); __________________ #include <QDebug> ... qCritical ( )<<" critical error : " <<error_num <<", description : " << error_string.c_str ( ); |
|
qFatal() | Вывод сообщений о фатальных для программы ошибках | После вывода сообщения происходит аварийное завершение работы программы |
qFatal ( " fatal error : % d , description :% s " , error_num, error_string .c_str ( ) ); |