Spec-Zone.ru › Qt 5.15

Класс 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.

Документация по типам членов

перечисление 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.

См. также space() и quote().

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() и 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 печатает управляющие символы и символы, не из US-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)

Записывает целое число со знаком, t, в поток и возвращает ссылку на поток.

QDebug &QDebug::operator<<(unsigned short t)

Записывает целое число без знака, 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)

Записывает целое число без знака, 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)

Записывает строку с нулевым окончанием, 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 выводит массив в кавычках и преобразует управляющие или не-US-ASCII символы в их последовательности C-escape (\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' не интерпретировалась как часть предыдущей шестнадцатеричной последовательности escape.

QDebug &QDebug::operator<<(const void *t)

Записывает указатель, t, в поток и возвращает ссылку на поток.

Связанные нечлены

template <typename T> QDebug operator<<(QDebug debug, const QFlags<T> &flags)

Записывает flags в debug.

Эта функция была добавлена в Qt 4.7.

template <typename T> QDebug operator<<(QDebug debug, const QList<T> &list)

Записывает содержимое list в debug. T необходимо поддерживать потоковую передачу в QDebug.

template <typename T> QDebug operator<<(QDebug debug, const QVector<T> &vec)

Записывает содержимое вектора vec в debug. T необходимо поддерживать потоковую передачу в QDebug.

template <typename T, typename Alloc> QDebug operator<<(QDebug debug, const std::vector<T, Alloc> &vec)

Записывает содержимое вектора vec в debug. T необходимо поддерживать потоковую передачу в QDebug.

Эта функция была добавлена в Qt 5.7.

template <typename T, typename Alloc> QDebug operator<<(QDebug debug, const std::list<T, Alloc> &vec)

Записывает содержимое списка vec в debug. T необходимо поддерживать потоковую передачу в QDebug.

Эта функция была добавлена в Qt 5.7.

template <typename Key, typename T, typename Compare, typename Alloc> QDebug operator<<(QDebug debug, const std::map<Key, T, Compare, Alloc> &map)

Записывает содержимое map в debug. Оба Key и T необходимо поддерживать потоковую передачу в QDebug.

Эта функция была добавлена в Qt 5.7.

template <typename Key, typename T, typename Compare, typename Alloc> QDebug operator<<(QDebug debug, const std::multimap<Key, T, Compare, Alloc> &map)

Записывает содержимое map в debug. Оба Key и T необходимо поддерживать потоковую передачу в QDebug.

Эта функция была добавлена в Qt 5.7.

template <typename Key, typename T> QDebug operator<<(QDebug debug, const QMap<Key, T> &map)

Записывает содержимое map в debug. Оба Key и T необходимо поддерживать потоковую передачу в QDebug.

template <typename Key, typename T> QDebug operator<<(QDebug debug, const QHash<Key, T> &hash)

Записывает содержимое hash в debug. Оба Key и T необходимо поддерживать потоковую передачу в QDebug.

template <typename T1, typename T2> QDebug operator<<(QDebug debug, const QPair<T1, T2> &pair)

Записывает содержимое pair в debug. Оба T1 и T2 необходимо поддерживать потоковую передачу в QDebug.

template <typename T> 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.15/qdebug.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API