调试流QDebug

  • Post author:
  • Post category:其他


一、描述

调试流。每当开发人员需要将调试或跟踪信息写入设备、文件、字符串或控制台时,就会使用 QDebug。

1.1、基本用法

在一般情况下,调用

qDebug

() 函数来


获取默认的 QDebug 对象


用于编写调试信息是很有用的。

这将使用接受

QtDebugMsg



QtMsgType

枚举值的构造函数构造一个 QDebug 对象。

enum

QtMsgType

:该枚举描述了可以发送到消息处理程序 (


QtMessageHandler


) 的消息。可以使用枚举来识别各种消息类型并将其与适当的操作相关联。


  • QtDebugMsg

    :由

    qDebug

    () 函数生成的消息。

  • QtInfoMsg

    :由

    qInfo

    () 函数生成的消息。

  • QtWarningMsg

    :由

    qWarning

    () 函数生成的消息。

  • QtCriticalMsg

    :由

    qCritical

    () 函数生成的消息。

  • QtFatalMsg

    :由

    qFatal

    () 函数生成的消息。

  • QtSystemMsg

    :等同于

    QtCriticalMsg

同样,

qWarning

()、

qCritical

() 和

qFatal

() 函数也为相应的消息类型返回 QDebug 对象。

1.2、将自定义类型写入流

要添加对自定义类型的支持,需要

实现一个流操作符

二、成员函数

1、

QDebug

(QtMsgType t)

构造一个调试流,写入消息类型 t 的处理程序。

    QDebug debug(QtDebugMsg);
    debug << "测试1" << "测试2";

    QDebug debug2(QtWarningMsg);
    debug2 << "测试1" << "测试2";


QDebug

(QString *string)

构造一个写入给定字符串的调试流。


QDebug

(QIODevice *device)

构造一个写入给定设备的调试流。

2、

~QDebug

()

刷新待写入的数据并销毁调试流。

3、void

setAutoInsertSpaces

(bool b)

启用 / 禁用在写入之间自动插入空格。

bool

autoInsertSpaces

()

是否将在写入之间自动插入空格。

    QString str1;
    QDebug debug(&str1);

    debug.setAutoInsertSpaces(true);
    debug << "测试1" << "测试2";
    qDebug()<<str1;

    QString str2;
    QDebug debug2(&str2);

    debug2.setAutoInsertSpaces(false);
    debug2 << "测试1" << "测试2";
    qDebug()<<str2;

4、QDebug &

noquote

()

禁止在 QChar、QString 和 QByteArray 内容周围自动插入引号字符并返回对流的引用。

引用时,这些类型将在不带引号字符的情况下打印,并且不会转义不可打印的字符。

QDebug &

quote

()

启用在 QChar、QString 和 QByteArray 内容周围自动插入引号字符并返回对流的引用。

默认情况下启用引用。

    QString str{"测试"};
    QDebug debug(QtDebugMsg);
    debug << str;
    debug.quote() << str;
    debug.noquote() << str;

5、QDebug &

nospace

()

禁用自动插入空格并返回对流的引用。

QDebug &

space

()

将一个空格字符写入调试流并返回对该流的引用。流会记住设置为将来的写入启用自动插入空格。

    QDebug debug(QtDebugMsg);
    debug << "测试1" << "测试2" << endl;
    debug.space() << "测试1" << "测试2"<< endl;
    debug.nospace() << "测试1" << "测试2"<< endl;

6、QDebug &

maybeQuote

(char c = ‘”‘)

根据自动插入引号的当前设置,将字符 c 写入调试流,并返回对流的引用。

7、QDebug &

resetFormat

()

重置流格式选项,使其恢复到其原始构造状态。

8、


[static]



template

<

typename

T> QString

toString

(T &&object)

    QMap<int,QString> map;
    map[1] = "one";
    map[1] = "two";

    QJsonObject obj;
    obj["one"] = 1;
    obj["two"] = 2;

    QJsonArray array;
    array.append(obj);

    qDebug()<< map;
    qDebug()<< QDebug::toString(map);
    qDebug()<< array;
    qDebug()<< QDebug::toString(array);



版权声明:本文为kenfan1647原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。