0

我有以下代码片段要运行。我想看到 qDebug() 的结果,但我不想看到 qInfo() 的结果。我想在基础上配置它,所以有时我需要那些 qInfo() 输出,有时不需要。

    qInfo()<<"Info print";
    qDebug()<<"Debug print";

在上面的代码中,我只想打印“调试打印”。但不能评论 qInfo() 行。

4

2 回答 2

1

正如它在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

于 2020-05-18T21:56:47.877 回答
0

您可以在运行时选择启用哪个类别(即使对于自定义类别)QLoggingCategory::setFilterRules

从 Qt Docs,以自定义类别为例:

QLoggingCategory::setFilterRules(QStringLiteral("driver.usb.debug=true"));

对于您的情况:

QLoggingCategory::setFilterRules(QStringLiteral("*.info=false"));

照顾使用"*.info=true",因为启用一切,即使是分析类别通常禁用

于 2020-06-05T16:12:32.287 回答