Класс QDebug
Класс QDebug предоставляет выходной поток для отладочной информации. Подробнее...
| Заголовок: | #include <QDebug> |
| qmake: | QT += core |
Открытые функции
| QDebug(QIODevice *device) | |
| QDebug(QString *string) | |
| QDebug(QtMsgType type) | |
| QDebug(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) |
| int | verbosity() const |
| QDebug & | operator<<(QChar t) |
| QDebug & | operator<<(bool t) |
| QDebug & | operator<<(char t) |
| QDebug & | operator<<(signed short i) |
| QDebug & | operator<<(unsigned short i) |
| QDebug & | operator<<(char16_t t) |
| QDebug & | operator<<(char32_t t) |
| QDebug & | operator<<(signed int i) |
| QDebug & | operator<<(unsigned int i) |
| QDebug & | operator<<(signed long l) |
| QDebug & | operator<<(unsigned long l) |
| QDebug & | operator<<(qint64 i) |
| QDebug & | operator<<(quint64 i) |
| QDebug & | operator<<(float f) |
| QDebug & | operator<<(double f) |
| QDebug & | operator<<(const char *s) |
| QDebug & | operator<<(const QString &s) |
| QDebug & | operator<<(const QStringRef &s) |
| QDebug & | operator<<(QLatin1String s) |
| QDebug & | operator<<(const QByteArray &b) |
| QDebug & | operator<<(const void *p) |
| QDebug & | operator=(const QDebug &other) |
Связанные внешние функции
| QDebug | operator<<(QDebug stream, const QList<T> &list) |
| QDebug | operator<<(QDebug stream, const std::list<T, Alloc> &list) |
| QDebug | operator<<(QDebug stream, const QVector<T> &vector) |
| QDebug | operator<<(QDebug stream, const std::vector<T, Alloc> &vector) |
| QDebug | operator<<(QDebug stream, const QSet<T> &set) |
| QDebug | operator<<(QDebug stream, const QMap<Key, T> &map) |
| QDebug | operator<<(QDebug stream, const std::map<Key, T, Compare, Alloc> &map) |
| QDebug | operator<<(QDebug stream, const std::multimap<Key, T, Compare, Alloc> &map) |
| QDebug | operator<<(QDebug stream, const QHash<Key, T> &hash) |
| QDebug | operator<<(QDebug stream, const QPair<T1, T2> &pair) |
| QDebug | operator<<(QDebug stream, const QFlags<T> &flag) |
Подробное описание
Класс 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 type)
Создает поток отладки, записывающий в обработчик для типа сообщения, указанного type.
QDebug::QDebug(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 равно 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<<(signed short i)
Записывает целое число со знаком, i, в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(unsigned short i)
Записывает целое число без знака, i, в поток и возвращает ссылку на поток.
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<<(signed int i)
Записывает целое число со знаком, i, в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(unsigned int i)
Записывает целое число без знака, i, в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(signed long l)
Записывает целое число со знаком l в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(unsigned long l)
Записывает целое число без знака l в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(qint64 i)
Записывает целое 64-битное число со знаком i в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(quint64 i)
Записывает целое 64-битное число без знака i в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(float f)
Записывает 32-битное число с плавающей точкой f в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(double f)
Записывает 64-битное число с плавающей точкой f в поток и возвращает ссылку на поток.
QDebug &QDebug::operator<<(const char *s)
Записывает строку с завершающим нулём s в поток и возвращает ссылку на поток. Строка никогда не заключается в кавычки и не преобразуется для вывода, но обратите внимание, что некоторые бэкэнды QDebug могут не быть 8-битно чистыми.
QDebug &QDebug::operator<<(const QString &s)
Записывает строку s в поток и возвращает ссылку на поток. Обычно 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 &s)
Записывает строку s в поток и возвращает ссылку на поток. Обычно QDebug печатает строку в кавычках и преобразует непечатаемые символы в их значения Unicode (\u1234).
Чтобы напечатать непечатаемые символы без преобразования, включите функциональность noquote(). Обратите внимание, что некоторые бэкэнды QDebug могут не быть 8-битно чистыми.
См. перегрузку QString для примеров.
QDebug &QDebug::operator<<(QLatin1String s)
Записывает строку s в поток и возвращает ссылку на поток. Обычно QDebug печатает строку в кавычках и преобразует непечатаемые символы в их значения Unicode (\u1234).
Чтобы напечатать непечатаемые символы без преобразования, включите функциональность noquote(). Обратите внимание, что некоторые бэкэнды QDebug могут не быть 8-битно чистыми.
См. перегрузку QString для примеров.
QDebug &QDebug::operator<<(const QByteArray &b)
Записывает массив байтов b в поток и возвращает ссылку на поток. Обычно 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 *p)
Записывает указатель p в поток и возвращает ссылку на поток.
QDebug &QDebug::operator=(const QDebug &other)
Присваивает поток отладки other этому потоку и возвращает ссылку на этот поток.
Связанные нечлены
QDebug operator<<(QDebug stream, const QList<T> &list)
Записывает содержимое list в stream. T необходимо поддерживать потоковую передачу в QDebug.
QDebug operator<<(QDebug stream, const std::list<T, Alloc> &list)
Записывает содержимое list в stream. T необходимо поддерживать потоковую передачу в QDebug.
Данная функция была добавлена в Qt 5.7.
QDebug operator<<(QDebug stream, const QVector<T> &vector)
Записывает содержимое vector в stream. T необходимо поддерживать потоковую передачу в QDebug.
QDebug operator<<(QDebug stream, const std::vector<T, Alloc> &vector)
Записывает содержимое vector в stream. T необходимо поддерживать потоковую передачу в QDebug.
Данная функция была добавлена в Qt 5.7.
QDebug operator<<(QDebug stream, const QSet<T> &set)
Записывает содержимое set в stream. T необходимо поддерживать потоковую передачу в QDebug.
QDebug operator<<(QDebug stream, const QMap<Key, T> &map)
Записывает содержимое map в stream. Оба Key и T необходимо поддерживать потоковую передачу в QDebug.
QDebug operator<<(QDebug stream, const std::map<Key, T, Compare, Alloc> &map)
Записывает содержимое map в stream. Оба Key и T необходимо поддерживать потоковую передачу в QDebug.
Данная функция была добавлена в Qt 5.7.
QDebug operator<<(QDebug stream, const std::multimap<Key, T, Compare, Alloc> &map)
Записывает содержимое map в stream. Оба Key и T необходимо поддерживать потоковую передачу в QDebug.
Данная функция была добавлена в Qt 5.7.
QDebug operator<<(QDebug stream, const QHash<Key, T> &hash)
Записывает содержимое hash в stream. Оба Key и T необходимо поддерживать потоковую передачу в QDebug.
QDebug operator<<(QDebug stream, const QPair<T1, T2> &pair)
Записывает содержимое pair в stream. Оба T1 и T2 необходимо поддерживать потоковую передачу в QDebug.
QDebug operator<<(QDebug stream, const QFlags<T> &flag)
Записывает flag в stream.
Данная функция была добавлена в Qt 4.7.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qdebug.html