Класс QDebug
Класс QDebug предоставляет выходной поток для отладочной информации. Подробнее...
| Заголовок: | #include <QDebug> |
| qmake: | QT += core |
Открытые функции
| QDebug(QIODevice *device) | |
| QDebug(QString *string) | |
| QDebug(QtMsgType t) | |
| QDebug(const QDebug &o) | |
| ~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) |
| 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=(const QDebug &other) |
Связанные нечлены
| QDebug | operator<<(QDebug debug, const QList<T> &list) |
| QDebug | operator<<(QDebug debug, const std::list<T, Alloc> &vec) |
| QDebug | operator<<(QDebug debug, const QVector<T> &vec) |
| QDebug | operator<<(QDebug debug, const std::vector<T, Alloc> &vec) |
| QDebug | operator<<(QDebug debug, const QSet<T> &set) |
| QDebug | operator<<(QDebug debug, const QMap<Key, T> &map) |
| 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 QHash<Key, T> &hash) |
| QDebug | operator<<(QDebug debug, const QPair<T1, T2> &pair) |
| QDebug | operator<<(QDebug debug, const QFlags<T> &flags) |
Подробное описание
Класс QDebug предоставляет выходной поток для отладочной информации.
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.
Документация по членам-функциям
QDebug::QDebug(QIODevice *device)
Создаёт поток отладки, записывающий в указанное device.
QDebug::QDebug(QString *string)
Создаёт поток отладки, записывающий в указанную string.
QDebug::QDebug(QtMsgType t)
Создаёт поток отладки, записывающий в обработчик для типа сообщения t.
QDebug::QDebug(const QDebug &o)
Создаёт копию другого потока отладки o.
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 равно true; в противном случае автоматическая вставка пробелов отключается.
Эта функция была добавлена в Qt 5.0.
См. также autoInsertSpaces() и QDebugStateSaver.
void QDebug::setVerbosity(int verbosityLevel)
Устанавливает уровень подробности потока в verbosityLevel.
Допустимый диапазон от 0 до 7. Значение по умолчанию 2.
Эта функция была добавлена в Qt 5.6.
См. также verbosity().
QDebug &QDebug::space()
Записывает пробел в поток отладки и возвращает ссылку на поток.
Поток запоминает, что автоматическая вставка пробелов включена для будущих записей.
См. также nospace() и maybeSpace().
void QDebug::swap(QDebug &other)
Меняет местами этот экземпляр потока отладки с other. Эта функция очень быстрая и никогда не завершается ошибкой.
Эта функция была добавлена в Qt 5.0.
int QDebug::verbosity() const
Возвращает уровень подробности потока отладки.
Операторы потоковой передачи могут проверить значение, чтобы определить, требуется ли подробный вывод, и вывести больше информации в зависимости от уровня. Более высокие значения означают, что требуется больше информации.
Допустимый диапазон от 0 до 7. Значение по умолчанию 2.
Эта функция была добавлена в Qt 5.6.
См. также setVerbosity().
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)
Записывает целое число, t, в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(unsigned int t)
Записывает целое число типа unsigned int, t, в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(long t)
Записывает целое число типа long, t, в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(unsigned long t)
Записывает целое беззнаковое число типа 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)
Записывает строку с завершением '\0', 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=(const QDebug &other)
Присваивает поток отладки other этому потоку и возвращает ссылку на этот поток.
Связанные нечлены
QDebug operator<<(QDebug debug, const QList<T> &list)
Выводит содержимое list в debug. T необходимо поддерживать потоковую передачу в QDebug.
QDebug operator<<(QDebug debug, const std::list<T, Alloc> &vec)
Выводит содержимое списка vec в debug. T необходимо поддерживать потоковую передачу в QDebug.
Эта функция была добавлена в Qt 5.7.
QDebug operator<<(QDebug debug, const QVector<T> &vec)
Выводит содержимое вектора vec в debug. T необходимо поддерживать потоковую передачу в QDebug.
QDebug operator<<(QDebug debug, const std::vector<T, Alloc> &vec)
Выводит содержимое вектора vec в debug. T необходимо поддерживать потоковую передачу в QDebug.
Эта функция была добавлена в Qt 5.7.
QDebug operator<<(QDebug debug, const QSet<T> &set)
Выводит содержимое set в debug. T необходимо поддерживать потоковую передачу в QDebug.
QDebug operator<<(QDebug debug, const QMap<Key, T> &map)
Выводит содержимое map в debug. Оба Key и T необходимо поддерживать потоковую передачу в QDebug.
QDebug operator<<(QDebug debug, const std::map<Key, T, Compare, Alloc> &map)
Выводит содержимое map в debug. Оба Key и T необходимо поддерживать потоковую передачу в QDebug.
Эта функция была добавлена в Qt 5.7.
QDebug operator<<(QDebug debug, const std::multimap<Key, T, Compare, Alloc> &map)
Выводит содержимое map в debug. Оба Key и T необходимо поддерживать потоковую передачу в QDebug.
Эта функция была добавлена в Qt 5.7.
QDebug operator<<(QDebug debug, const QHash<Key, T> &hash)
Выводит содержимое hash в debug. Оба Key и T необходимо поддерживать потоковую передачу в QDebug.
QDebug operator<<(QDebug debug, const QPair<T1, T2> &pair)
Выводит содержимое pair в debug. Оба T1 и T2 необходимо поддерживать потоковую передачу в QDebug.
QDebug operator<<(QDebug debug, const QFlags<T> &flags)
Выводит flags в debug.
Эта функция была добавлена в Qt 4.7.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qdebug.html