Spec-Zone.ru › Qt

Класс QDebug

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

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

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

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 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 QMultiHash<Key, T> &hash)
QDebug operator<<(QDebug debug, const QPair<T1, T2> &pair)
QDebug operator<<(QDebug debug, const std::pair<T1, T2> &pair)
QDebug operator<<(QDebug debug, const QContiguousCache<T> &cache)
QDebug operator<<(QDebug debug, const QFlags<T> &flags)
QDebug operator<<(QDebug debug, const QList<T> &list)
QDebug operator<<(QDebug debug, const std::list<T, Alloc> &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 QMultiMap<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 используется всякий раз, когда разработчик хочет вывести отладочную или трассирующую информацию на устройство, в файл, строку или консоль.

Основные примеры использования

В большинстве случаев полезно вызвать функцию 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)

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

QDebug::QDebug(QIODevice *device)

Создает поток отладки, который записывает в указанное 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 истинно; в противном случае автоматическая вставка пробелов отключена.

Эта функция была введена в 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-экранированные последовательности или их значения 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 бит, используя кодек локальной среды, чтобы использовать некоторые бэкэнды, что может привести к искаженному выводу (моджибайк). Рекомендуется ограничиться строками US-ASCII.

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

Записывает строку UTF-16, завершающуюся u'\0', t, в поток и возвращает ссылку на поток. Строка никогда не заключается в кавычки или не экранируется для вывода. Обратите внимание, что QDebug буферизует внутренне как UTF-16 и может потребоваться преобразовать в 8 бит, используя кодек локальной среды, чтобы использовать некоторые бэкэнды, что может привести к искаженному выводу (моджибайк). Рекомендуется ограничиться строками 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-эскейпов (\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 выводит массив в кавычках и преобразует управляющие или не-US-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 выводит данные в кавычках и преобразует управляющие или не-US-ASCII символы в их последовательности C-эскейпов (\xAB). Таким образом, вывод всегда является 7-битным чистым, и строку можно скопировать из вывода и вставить обратно в исходный код C++, если необходимо.

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

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

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

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

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

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

template <typename Key, typename T> QDebug operator<<(QDebug debug, const QMultiHash<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 T1, typename T2> QDebug operator<<(QDebug debug, const std::pair<T1, T2> &pair)

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

template <typename T> QDebug operator<<(QDebug debug, const QContiguousCache<T> &cache)

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

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

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

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

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

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

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

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

[since 5.7] 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> QDebug operator<<(QDebug debug, const QSet<T> &set)

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

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 QMultiMap<Key, T> &map)

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

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

[since 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 QHash<Key, T> &hash)

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

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qdebug.html

Spec-Zone.ru

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