QDebugStateSaver 類

方便類為自定義 QDebug 運算符。 更多...

頭: #include <QDebugStateSaver>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

公共函數

QDebugStateSaver (QDebug & dbg )
~QDebugStateSaver ()

詳細描述

Saves the settings used by QDebug , and restores them upon destruction, then calls maybeSpace (), to separate arguments with a space if autoInsertSpaces () was true at the time of constructing the QDebugStateSaver.

The automatic insertion of spaces between writes is one of the settings that QDebugStateSaver stores for the duration of the current block.

The settings of the internal QTextStream are also saved and restored, so that using << Qt::hex QDebug operator doesn't affect other QDebug 運算符。

QDebugStateSaver is typically used in the implementation of an operator<<() for debugging:

QDebug operator<<(QDebug dbg, const Message &message)
{
    QDebugStateSaver saver(dbg);
    const QList<QStringView> pieces = message.body().split(u"\r\n", Qt::SkipEmptyParts);
    if (pieces.isEmpty())
        dbg.nospace() << "Message()";
    else if (pieces.size() == 1)
        dbg.nospace() << "Message(" << pieces.first() << ")";
    else
        dbg.nospace() << "Message(" << pieces.first() << " ...)";
    return dbg;
}
					

成員函數文檔編製

QDebugStateSaver:: QDebugStateSaver ( QDebug & dbg )

Creates a QDebugStateSaver instance, which saves the settings currently used by dbg .

另請參閱 QDebug::setAutoInsertSpaces () 和 QDebug::autoInsertSpaces ().

[noexcept] QDebugStateSaver:: ~QDebugStateSaver ()

銷毀 QDebugStateSaver instance, which restores the settings used when the QDebugStateSaver instance was created.

另請參閱 QDebug::setAutoInsertSpaces () 和 QDebug::autoInsertSpaces ().