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