我有下面的代码片段要运行。其中我想看到 qDebug(( 的结果,但我不想看到 qInfo(( 的结果。我想在基础上配置它,所以我需要那些 qInfo(( 输出,有时不需要。
qInfo()<<"Info print";
qDebug()<<"Debug print";
在上面的代码中,我只想打印"调试打印"。 但不能注释 qInfo(( 行。
正如Qt调试文档中所描述的,您必须使用QT_NO_INFO_OUTPUT
进行编译才能禁用它。
# your .pro file
DEFINES += QT_DEPRECATED_WARNINGS QT_NO_INFO_OUTPUT
您还可以对其他宏使用 define :
qDebug()
: 使用QT_NO_DEBUG_OUTPUT
禁用qInfo()
: 禁用QT_NO_INFO_OUTPUT
qWarning()
: 禁用QT_NO_WARNING_OUTPUT
qCritical()
: 使用QT_FATAL_CRITICALS
启用
您可以在运行时选择启用哪个类别(即使是自定义类别(,QLoggingCategory::setFilterRules
从Qt Docs,使用自定义类别进行考试:
QLoggingCategory::setFilterRules(QStringLiteral("driver.usb.debug=true"));
对于您的情况:
QLoggingCategory::setFilterRules(QStringLiteral("*.info=false"));
注意使用"*.info=true"
因为启用所有内容,即使对于分析类别通常禁用