Spec-Zone.ru › Qt 6.0

Класс QDebug

Класс QDebug предоставляет поток вывода для отладочной информации. Подробнее...

Заголовок: #include <QDebug>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Наследует: QIODeviceBase
  • Список всех членов, включая унаследованные

Открытые типы

Перечисление УровеньПодробности { МинимальныйУровеньПодробности, СтандартныйУровеньПодробности, МаксимальныйУровеньПодробности }

Общедоступные функции

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 char16_t *t)
QDebug & operator<<(const QString &t)
QDebug & operator<<(QStringView s)
QDebug & operator<<(QUtf8StringView s)
QDebug & operator<<(QLatin1String t)
QDebug & operator<<(const QByteArray &t)
QDebug & operator<<(QByteArrayView t)
QDebug & operator<<(const void *t)

Статические общедоступные члены

QString toString(T &&object)

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

QDebug operator<<(QDebug debug, const QFlags<T> &flags)
QDebugIfHasDebugStream<T> operator<<(QDebug debug, const QList<T> &list)
QDebugIfHasDebugStream<T> operator<<(QDebug debug, const std::vector<T, Alloc> &vec)
QDebugIfHasDebugStream<T> operator<<(QDebug debug, const std::list<T, Alloc> &vec)
QDebugIfHasDebugStream<Key, T> operator<<(QDebug debug, const std::map<Key, T, Compare, Alloc> &map)
QDebugIfHasDebugStream<Key, T> operator<<(QDebug debug, const std::multimap<Key, T, Compare, Alloc> &map)
QDebugIfHasDebugStream<Key, T> operator<<(QDebug debug, const QMap<Key, T> &map)
QDebugIfHasDebugStream<Key, T> operator<<(QDebug debug, const QHash<Key, T> &hash)
QDebugIfHasDebugStream<T> 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.

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

[since 5.13] перечисление 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)

Создает поток отладки, который записывает в указанную строку.

QDebug::QDebug(QIODevice *device)

Создает поток отладки, который записывает в указанное устройство.

QDebug &QDebug::operator=(const QDebug &other)

Присваивает поток отладки other этому потоку и возвращает ссылку на этот поток.

QDebug::~QDebug()

Очищает все ожидающие данные для записи и уничтожает поток отладки.

[since 5.0] bool QDebug::autoInsertSpaces() const

Возвращает true, если этот экземпляр QDebug автоматически вставляет пробелы между записями.

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

См. также setAutoInsertSpaces() и QDebugStateSaver.

[since 5.4] QDebug &QDebug::maybeQuote(char c = '"')

Записывает символ c в поток отладки в зависимости от текущего состояния автоматической вставки кавычек и возвращает ссылку на поток.

Символ по умолчанию — двойная кавычка ".

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

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

QDebug &QDebug::maybeSpace()

Записывает символ пробела в поток отладки в зависимости от текущего состояния автоматической вставки пробелов и возвращает ссылку на поток.

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

[since 5.4] QDebug &QDebug::noquote()

Отключает автоматическую вставку кавычек вокруг QChar, QString и QByteArray содержимого и возвращает ссылку на поток.

При отключенном цитировании эти типы печатаются без кавычек и без экранирования непечатаемых символов.

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

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

QDebug &QDebug::nospace()

Отключает автоматическую вставку пробелов и возвращает ссылку на поток.

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

[since 5.4] QDebug &QDebug::quote()

Включает автоматическую вставку кавычек вокруг QChar, QString и QByteArray содержимого и возвращает ссылку на поток.

Цитата включена по умолчанию.

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

См. также noquote() и maybeQuote().

[since 5.4] QDebug &QDebug::resetFormat()

Сбрасывает параметры форматирования потока, возвращая его в исходное состояние.

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

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

[since 5.0] void QDebug::setAutoInsertSpaces(bool b)

Включает автоматическую вставку пробелов между записями, если b равно true; в противном случае автоматическая вставка пробелов отключается.

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

См. также autoInsertSpaces() и QDebugStateSaver.

[since 5.6] void QDebug::setVerbosity(int verbosityLevel)

Устанавливает подробность потока на verbosityLevel.

Допустимый диапазон — от 0 до 7. Значение по умолчанию — 2.

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

См. также verbosity() и VerbosityLevel.

QDebug &QDebug::space()

Записывает пробел в поток отладки и возвращает ссылку на поток.

Поток запоминает, что автоматическая вставка пробелов включена для будущих записей.

См. также nospace() и maybeSpace().

[since 5.0] void QDebug::swap(QDebug &other)

Меняет местами текущую инстанцию потока отладки с other. Эта функция очень быстрая и никогда не терпит неудач.

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

[static, since 6.0] template <typename T> QString QDebug::toString(T &&object)

Выводит object в экземпляр QDebug, работающий со строкой, и затем возвращает эту строку.

Эта функция полезна в случаях, когда вам нужна текстовая представление объекта для отладки, но вы не можете использовать operator<<. Например:

    QTRY_VERIFY2(list.isEmpty(), qPrintable(QString::fromLatin1(
        "Expected list to be empty, but it has the following items: %1")).arg(QDebug::toString(list)));

Строка выводится с помощью nospace().

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

[since 5.13] QDebug &QDebug::verbosity(int verbosityLevel)

Устанавливает уровень подробности потока в verbosityLevel и возвращает ссылку на поток.

Допустимый диапазон от 0 до 7. Значение по умолчанию равно 2.

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

См. также verbosity(), setVerbosity() и VerbosityLevel.

[since 5.6] int QDebug::verbosity() const

Возвращает уровень подробности потока отладки.

Операторы потоковой передачи могут проверить это значение, чтобы определить, требуется ли подробный вывод, и печатать дополнительную информацию в зависимости от уровня. Более высокие значения указывают на то, что требуется больше информации.

Допустимый диапазон от 0 до 7. Значение по умолчанию равно 2.

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

См. также setVerbosity() и VerbosityLevel.

QDebug &QDebug::operator<<(QChar t)

Записывает символ t в поток и возвращает ссылку на поток. Обычно QDebug печатает управляющие символы и символы, не являющиеся символами ASCII, как их последовательности C-escape или их значения 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)

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

[since 5.5] QDebug &QDebug::operator<<(char16_t t)

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

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

[since 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)

Записывает строку UTF-8, завершающуюся '\0', t, в поток и возвращает ссылку на поток. Строка никогда не заключается в кавычки или не экранируется для вывода. Обратите внимание, что QDebug буферизует внутри как UTF-16 и может потребоваться преобразование в 8 бит с помощью кодека локальной среды, чтобы использовать некоторые бэкэнды, что может привести к искажению вывода (mojibake). Рекомендуется ограничиться строками US-ASCII.

[since 6.0] QDebug &QDebug::operator<<(const char16_t *t)

Записывает строку UTF-16, завершающуюся u'\0', t, в поток и возвращает ссылку на поток. Строка никогда не заключаются в кавычки или не экранируется для вывода. Обратите внимание, что QDebug буферизует внутри как UTF-16 и может потребоваться преобразование в 8 бит с помощью кодека локальной среды, чтобы использовать некоторые бэкэнды, что может привести к искажению вывода (mojibake). Рекомендуется ограничиться строками US-ASCII.

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

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: "а́"

[since 5.10] QDebug &QDebug::operator<<(QStringView s)

Записывает строковый фрагмент s в поток и возвращает ссылку на поток. Обычно QDebug печатает строку в кавычках и преобразует непечатаемые символы в их значения Unicode (\u1234).

Чтобы напечатать непечатаемые символы без преобразования, включите функциональность noquote(). Обратите внимание, что некоторые бэкэнды QDebug могут не быть 8-битовыми.

См. перегрузку для QString для примеров.

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

[since 6.0] QDebug &QDebug::operator<<(QUtf8StringView s)

Записывает строковый фрагмент s в поток и возвращает ссылку на поток.

Обычно QDebug печатает данные в кавычках и преобразует управляющие или символы, не являющиеся символами US-ASCII, в их последовательности C-escape (\xAB). Таким образом, вывод всегда является 7-битовым и строку можно скопировать из вывода и вставить обратно в C++ исходный код, если необходимо.

Чтобы напечатать непечатаемые символы без преобразования, включите функциональность noquote(). Обратите внимание, что некоторые бэкэнды QDebug могут не быть 8-битовыми.

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

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' не интерпретировалась как часть предыдущей шестнадцатеричной экранированной последовательности.

[since 6.0] QDebug &QDebug::operator<<(QByteArrayView t)

Записывает данные наблюдаемого массива байтов t в поток и возвращает ссылку на поток.

Обычно QDebug выводит данные в кавычках и преобразует управляющие символы или символы, не являющиеся ASCII, в их C-экранированные последовательности (\xAB). Таким образом, вывод всегда является 7-битно чистым, и строку можно скопировать из вывода и вставить обратно в исходный код C++, если необходимо.

Чтобы вывести непечатаемые символы без преобразования, включите функциональность noquote(). Обратите внимание, что некоторые бэкэнды QDebug могут не быть 8-битно чистыми.

См. перегрузку QByteArray для примеров.

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

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

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

Связанные нечленные функции

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

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

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

Записывает содержимое list в debug. T должен поддерживать ввод в QDebug.

[since 5.7] template <typename T, typename Alloc> QDebugIfHasDebugStream<T> operator<<(QDebug debug, const std::vector<T, Alloc> &vec)

Записывает содержимое вектора vec в debug. T должен поддерживать ввод в QDebug.

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

[since 5.7] template <typename T, typename Alloc> QDebugIfHasDebugStream<T> operator<<(QDebug debug, const std::list<T, Alloc> &vec)

Записывает содержимое списка vec в debug. T должен поддерживать ввод в QDebug.

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

[since 5.7] template <typename Key, typename T, typename Compare, typename Alloc> QDebugIfHasDebugStream<Key, T> operator<<(QDebug debug, const std::map<Key, T, Compare, Alloc> &map)

Записывает содержимое map в debug. Как Key так и T должны поддерживать ввод в QDebug.

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

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

Записывает содержимое map в debug. Как Key так и T должны поддерживать ввод в QDebug.

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

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

Записывает содержимое map в debug. Как Key так и T должны поддерживать ввод в QDebug.

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

Записывает содержимое hash в debug. Как Key так и T должны поддерживать ввод в QDebug.

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

Spec-Zone.ru

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