我有以下代码片段要运行。我想看到 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
您还可以将定义用于其他宏:
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"
,因为启用一切,即使是分析类别通常禁用