一、描述
   
调试流。每当开发人员需要将调试或跟踪信息写入设备、文件、字符串或控制台时,就会使用 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);