Класс QDebug
Класс QDebug предоставляет выходной поток для отладочной информации. Подробнее...
| Заголовок: | #include <QDebug> |
| qmake: | QT += core |
Открытые типы
| enum | VerbosityLevel { MinimumVerbosity, DefaultVerbosity, MaximumVerbosity } |
Открытые функции
| QDebug(const QDebug &o) | |
| QDebug(QtMsgType t) | |
| QDebug(QString *string) | |
| QDebug(QIODevice *device) | |
| QDebug & | operator=(const QDebug &other) |
| ~QDebug() | |
| bool | autoInsertSpaces() const |
| QDebug & | maybeQuote(char c = '"') |
| QDebug & | maybeSpace() |
| QDebug & | noquote() |
| QDebug & | nospace() |
| QDebug & | quote() |
| QDebug & | resetFormat() |
| void | setAutoInsertSpaces(bool b) |
| void | setVerbosity(int verbosityLevel) |
| QDebug & | space() |
| void | swap(QDebug &other) |
| QDebug & | verbosity(int verbosityLevel) |
| int | verbosity() const |
| QDebug & | operator<<(QChar t) |
| QDebug & | operator<<(bool t) |
| QDebug & | operator<<(char t) |
| QDebug & | operator<<(short t) |
| QDebug & | operator<<(unsigned short t) |
| QDebug & | operator<<(char16_t t) |
| QDebug & | operator<<(char32_t t) |
| QDebug & | operator<<(int t) |
| QDebug & | operator<<(unsigned int t) |
| QDebug & | operator<<(long t) |
| QDebug & | operator<<(unsigned long t) |
| QDebug & | operator<<(qint64 t) |
| QDebug & | operator<<(quint64 t) |
| QDebug & | operator<<(float t) |
| QDebug & | operator<<(double t) |
| QDebug & | operator<<(const char *t) |
| QDebug & | operator<<(const QString &t) |
| QDebug & | operator<<(const QStringRef &t) |
| QDebug & | operator<<(QStringView s) |
| QDebug & | operator<<(QLatin1String t) |
| QDebug & | operator<<(const QByteArray &t) |
| QDebug & | operator<<(const void *t) |
Связанные внешние функции
| QDebug | operator<<(QDebug debug, const QFlags<T> &flags) |
| QDebug | operator<<(QDebug debug, const QList<T> &list) |
| QDebug | operator<<(QDebug debug, const QVector<T> &vec) |
| QDebug | operator<<(QDebug debug, const std::vector<T, Alloc> &vec) |
| QDebug | operator<<(QDebug debug, const std::list<T, Alloc> &vec) |
| QDebug | operator<<(QDebug debug, const std::map<Key, T, Compare, Alloc> &map) |
| QDebug | operator<<(QDebug debug, const std::multimap<Key, T, Compare, Alloc> &map) |
| QDebug | operator<<(QDebug debug, const QMap<Key, T> &map) |
| QDebug | operator<<(QDebug debug, const QHash<Key, T> &hash) |
| QDebug | operator<<(QDebug debug, const QPair<T1, T2> &pair) |
| QDebug | operator<<(QDebug debug, const QSet<T> &set) |
Подробное описание
QDebug используется, когда разработчику необходимо вывести отладочную или трассировочную информацию на устройство, файл, строку или консоль.
Базовое использование
В общем случае полезно вызвать функцию qDebug() для получения объекта QDebug по умолчанию, который можно использовать для записи отладочной информации.
qDebug() << "Date:" << QDate::currentDate();
qDebug() << "Types:" << QString("String") << QChar('x') << QRect(0, 10, 50, 40);
qDebug() << "Custom coordinate type:" << coordinate; Это создаёт объект QDebug с использованием конструктора, принимающего значение QtMsgType типа QtDebugMsg. Аналогично, функции qWarning(), qCritical() и qFatal() также возвращают объекты QDebug для соответствующих типов сообщений.
Класс также предоставляет несколько конструкторов для других ситуаций, включая конструктор, принимающий QFile или любой другой подкласс QIODevice, который используется для записи отладочной информации в файлы и другие устройства. Конструктор, принимающий QString, используется для записи в строку для отображения или сериализации.
Параметры форматирования
QDebug форматирует вывод так, чтобы его было легко читать. Он автоматически добавляет пробелы между аргументами и добавляет кавычки вокруг аргументов QString, QByteArray и QChar.
Вы можете настроить эти параметры с помощью методов space(), nospace() и quote(), noquote(). Кроме того, манипуляторы QTextStream могут быть переданы в поток QDebug.
QDebugStateSaver ограничивает изменения форматирования текущей областью. resetFormat() сбрасывает параметры до значений по умолчанию.
Запись пользовательских типов в поток
Многие стандартные типы могут быть записаны в объекты QDebug, и Qt предоставляет поддержку для большинства типов значений Qt. Для добавления поддержки пользовательских типов необходимо реализовать оператор потокового ввода/вывода, как в следующем примере:
QDebug operator<<(QDebug debug, const Coordinate &c)
{
QDebugStateSaver saver(debug);
debug.nospace() << '(' << c.x() << ", " << c.y() << ')';
return debug;
} Это описано в документах Методы отладки и Создание пользовательских типов Qt.
Документация по типам-членам
enum QDebug::VerbosityLevel
Этот перечисление описывает диапазон уровней подробности.
| Константа | Значение |
|---|---|
QDebug::MinimumVerbosity |
0 |
QDebug::DefaultVerbosity |
2 |
QDebug::MaximumVerbosity |
7 |
Это перечисление было введено или изменено в Qt 5.13.
См. также verbosity() и setVerbosity().
Документация по функциям-членам
QDebug::QDebug(const QDebug &o)
Создаёт копию другого потока отладки o.
QDebug::QDebug(QtMsgType t)
Создаёт поток отладки, который записывает в обработчик для типа сообщения t.
QDebug::QDebug(QString *string)
Создаёт поток отладки, который записывает в указанную строку string.
QDebug::QDebug(QIODevice *device)
Создаёт поток отладки, который записывает в указанное устройство device.
QDebug &QDebug::operator=(const QDebug &other)
Присваивает поток отладки other этому потоку и возвращает ссылку на этот поток.
QDebug::~QDebug()
Очищает все ожидающие данные для записи и уничтожает поток отладки.
bool QDebug::autoInsertSpaces() const
Возвращает true, если этот экземпляр QDebug будет автоматически вставлять пробелы между записями.
Эта функция была введена в Qt 5.0.
См. также setAutoInsertSpaces() и QDebugStateSaver.
QDebug &QDebug::maybeQuote(char c = '"')
Записывает символ c в поток отладки в зависимости от текущего параметра автоматического вставки кавычек и возвращает ссылку на поток.
По умолчанию символом является двойная кавычка ".
Эта функция была введена в Qt 5.4.
См. также quote() и noquote().
QDebug &QDebug::maybeSpace()
Записывает символ пробела в поток отладки в зависимости от текущего параметра автоматической вставки пробелов и возвращает ссылку на поток.
См. также space() и nospace().
QDebug &QDebug::noquote()
Отключает автоматическую вставку кавычек вокруг содержимого QChar, QString и QByteArray и возвращает ссылку на поток.
Когда кавычки отключены, эти типы выводятся без кавычек и без экранирования непечатаемых символов.
Эта функция была введена в Qt 5.4.
См. также quote() и maybeQuote().
QDebug &QDebug::nospace()
Отключает автоматическую вставку пробелов и возвращает ссылку на поток.
См. также space() и maybeSpace().
QDebug &QDebug::quote()
Включает автоматическую вставку кавычек вокруг содержимого QChar, QString и QByteArray и возвращает ссылку на поток.
Кавычки включены по умолчанию.
Эта функция была введена в Qt 5.4.
См. также noquote() и maybeQuote().
QDebug &QDebug::resetFormat()
Сбрасывает параметры форматирования потока, возвращая его в исходное состояние.
Эта функция была введена в Qt 5.4.
void QDebug::setAutoInsertSpaces(bool b)
Включает автоматическую вставку пробелов между записями, если b истинно; в противном случае автоматическая вставка пробелов отключена.
Эта функция была введена в Qt 5.0.
См. также autoInsertSpaces() и QDebugStateSaver.
void QDebug::setVerbosity(int verbosityLevel)
Устанавливает подробность потока в verbosityLevel.
Допустимый диапазон от 0 до 7. Значение по умолчанию 2.
Эта функция была введена в Qt 5.6.
См. также verbosity() и VerbosityLevel.
QDebug &QDebug::space()
Записывает символ пробела в поток отладки и возвращает ссылку на поток.
Поток запоминает, что автоматическая вставка пробелов включена для будущих записей.
См. также nospace() и maybeSpace().
void QDebug::swap(QDebug &other)
Меняет местами этот экземпляр потока отладки с other. Эта функция очень быстрая и никогда не завершается с ошибкой.
Эта функция была введена в Qt 5.0.
QDebug &QDebug::verbosity(int verbosityLevel)
Устанавливает подробность потока в verbosityLevel и возвращает ссылку на поток.
Допустимый диапазон от 0 до 7. Значение по умолчанию 2.
Эта функция была введена в Qt 5.13.
См. также verbosity(), setVerbosity() и VerbosityLevel.
int QDebug::verbosity() const
Возвращает подробность потока отладки.
Операторы потокового ввода/вывода могут проверить значение, чтобы определить, нужно ли выводить подробную информацию, и выводить больше информации в зависимости от уровня. Более высокие значения указывают на то, что требуется больше информации.
Допустимый диапазон от 0 до 7. Значение по умолчанию 2.
Эта функция была введена в Qt 5.6.
См. также setVerbosity() и VerbosityLevel.
QDebug &QDebug::operator<<(QChar t)
Записывает символ t в поток и возвращает ссылку на поток. Обычно QDebug печатает управляющие символы и символы, не являющиеся символами ASCII, как их C-экранированные последовательности или их Unicode-значения (\u1234). Для вывода непечатаемых символов без преобразования включите функциональность noquote(), но имейте в виду, что некоторые бэкэнды QDebug могут быть не 8-битно-чистыми и могут не иметь возможности представлять t.
QDebug &QDebug::operator<<(bool t)
Записывает булево значение t в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(char t)
Записывает символ t в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(short t)
Записывает целое число со знаком типа short, t, в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(unsigned short t)
Записывает целое число без знака типа unsigned short, t, в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(char16_t t)
Записывает символ UTF-16, t, в поток и возвращает ссылку на поток.
Эта функция была добавлена в Qt 5.5.
QDebug &QDebug::operator<<(char32_t t)
Записывает символ UTF-32, t, в поток и возвращает ссылку на поток.
Эта функция была добавлена в Qt 5.5.
QDebug &QDebug::operator<<(int t)
Записывает целое число со знаком типа int, t, в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(unsigned int t)
Записывает целое число без знака типа unsigned int, t, в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(long t)
Записывает целое число со знаком типа long, t, в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(unsigned long t)
Записывает целое число без знака типа unsigned long, t, в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(qint64 t)
Записывает целое 64-битное число со знаком, t, в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(quint64 t)
Записывает целое 64-битное число без знака, t, в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(float t)
Записывает 32-битное число с плавающей точкой, t, в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(double t)
Записывает 64-битное число с плавающей точкой, t, в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(const char *t)
Записывает строку с завершающим нулём, t, в поток и возвращает ссылку на поток. Строка никогда не заключается в кавычки и не преобразуется при выводе, но обратите внимание, что некоторые бэкэнды QDebug могут не поддерживать 8-битную чистоту.
QDebug &QDebug::operator<<(const QString &t)
Записывает строку, t, в поток и возвращает ссылку на поток. Обычно QDebug выводит строку в кавычках и преобразует непечатаемые символы в их значения Unicode (\u1234).
Чтобы вывести непечатаемые символы без преобразования, включите функциональность noquote(). Обратите внимание, что некоторые бэкэнды QDebug могут не поддерживать 8-битную чистоту.
Примеры вывода:
QString s;
s = "a";
qDebug().noquote() << s; // prints: a
qDebug() << s; // prints: "a"
s = "\"a\r\n\"";
qDebug() << s; // prints: "\"a\r\n\""
s = "\033"; // escape character
qDebug() << s; // prints: "\u001B"
s = "\u00AD"; // SOFT HYPHEN
qDebug() << s; // prints: "\u00AD"
s = "\u00E1"; // LATIN SMALL LETTER A WITH ACUTE
qDebug() << s; // prints: "á"
s = "a\u0301"; // "a" followed by COMBINING ACUTE ACCENT
qDebug() << s; // prints: "á";
s = "\u0430\u0301"; // CYRILLIC SMALL LETTER A followed by COMBINING ACUTE ACCENT
qDebug() << s; // prints: "а́" QDebug &QDebug::operator<<(const QStringRef &t)
Записывает строку, t, в поток и возвращает ссылку на поток. Обычно QDebug выводит строку в кавычках и преобразует непечатаемые символы в их значения Unicode (\u1234).
Чтобы вывести непечатаемые символы без преобразования, включите функциональность noquote(). Обратите внимание, что некоторые бэкэнды QDebug могут не поддерживать 8-битную чистоту.
См. перегрузку для QString для примеров.
QDebug &QDebug::operator<<(QStringView s)
Записывает строковый фрагмент, s, в поток и возвращает ссылку на поток. Обычно QDebug выводит строку в кавычках и преобразует непечатаемые символы в их значения Unicode (\u1234).
Чтобы вывести непечатаемые символы без преобразования, включите функциональность noquote(). Обратите внимание, что некоторые бэкэнды QDebug могут не поддерживать 8-битную чистоту.
См. перегрузку для QString для примеров.
Эта функция была добавлена в Qt 5.10.
QDebug &QDebug::operator<<(QLatin1String t)
Записывает строку, t, в поток и возвращает ссылку на поток. Обычно QDebug выводит строку в кавычках и преобразует непечатаемые символы в их значения Unicode (\u1234).
Чтобы вывести непечатаемые символы без преобразования, включите функциональность noquote(). Обратите внимание, что некоторые бэкэнды QDebug могут не поддерживать 8-битную чистоту.
См. перегрузку для QString для примеров.
QDebug &QDebug::operator<<(const QByteArray &t)
Записывает массив байтов, t, в поток и возвращает ссылку на поток. Обычно QDebug выводит массив в кавычках и преобразует управляющие или не-ASCII символы в их C-экранированные последовательности (\xAB). Таким образом, вывод всегда 7-битный и строку можно скопировать из вывода и вставить обратно в исходный код C++, если необходимо.
Чтобы вывести непечатаемые символы без преобразования, включите функциональность noquote(). Обратите внимание, что некоторые бэкэнды QDebug могут не поддерживать 8-битную чистоту.
Примеры вывода:
QByteArray ba;
ba = "a";
qDebug().noquote() << ba; // prints: a
qDebug() << ba; // prints: "a"
ba = "\"a\r\n\"";
qDebug() << ba; // prints: "\"a\r\n\""
ba = "\033"; // escape character
qDebug() << ba; // prints: "\x1B"
ba = "\xC3\xA1";
qDebug() << ba; // prints: "\xC3\xA1"
ba = QByteArray("a\0b", 3);
qDebug() << ba // prints: "\a\x00""b" Обратите внимание, как QDebug необходимо было закрыть и открыть строку таким образом, как языки C и C++ конкатенируют строковые литералы, чтобы буква 'b' не интерпретировалась как часть предыдущей шестнадцатеричной экранированной последовательности.
QDebug &QDebug::operator<<(const void *t)
Записывает указатель, t, в поток и возвращает ссылку на поток.
Связанные нечлены
QDebug QDebug::operator<<(QDebug debug, const QFlags<T> &flags)
Записывает flags в debug.
Эта функция была добавлена в Qt 4.7.
QDebug QDebug::operator<<(QDebug debug, const QList<T> &list)
Записывает содержимое list в debug. T необходимо поддерживать потоковую передачу в QDebug.
QDebug QDebug::operator<<(QDebug debug, const QVector<T> &vec)
Записывает содержимое вектора vec в debug. T необходимо поддерживать потоковую передачу в QDebug.
QDebug QDebug::operator<<(QDebug debug, const std::vector<T, Alloc> &vec)
Записывает содержимое вектора vec в debug. T необходимо поддерживать потоковую передачу в QDebug.
Эта функция была добавлена в Qt 5.7.
QDebug QDebug::operator<<(QDebug debug, const std::list<T, Alloc> &vec)
Записывает содержимое списка vec в debug. T необходимо поддерживать потоковую передачу в QDebug.
Эта функция была добавлена в Qt 5.7.
QDebug QDebug::operator<<(QDebug debug, const std::map<Key, T, Compare, Alloc> &map)
Записывает содержимое map в debug. Оба Key и T должны поддерживать потоковую передачу в QDebug.
Эта функция была добавлена в Qt 5.7.
QDebug QDebug::operator<<(QDebug debug, const std::multimap<Key, T, Compare, Alloc> &map)
Записывает содержимое map в debug. Оба Key и T должны поддерживать потоковую передачу в QDebug.
Эта функция была добавлена в Qt 5.7.
QDebug QDebug::operator<<(QDebug debug, const QMap<Key, T> &map)
Записывает содержимое map в debug. Оба Key и T должны поддерживать потоковую передачу в QDebug.
QDebug QDebug::operator<<(QDebug debug, const QHash<Key, T> &hash)
Записывает содержимое hash в debug. Оба Key и T должны поддерживать потоковую передачу в QDebug.
QDebug QDebug::operator<<(QDebug debug, const QPair<T1, T2> &pair)
Записывает содержимое pair в debug. Оба T1 и T2 должны поддерживать потоковую передачу в QDebug.
QDebug QDebug::operator<<(QDebug debug, const QSet<T> &set)
Записывает содержимое set в debug. T необходимо поддерживать потоковую передачу в QDebug.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qdebug.html