QDebug 设置打印级别
时间: 2024-09-15 14:06:16 浏览: 40
QT实现类似qDebug()打印输出之mDebug()
在Qt中,你可以通过设置`QCoreApplication`的`setMessageHandler`函数来改变`QDebug`, `qInfo`, 等输出的处理方式。如果你想控制哪些级别以上的消息被打印,可以自定义一个消息处理器,这个处理器可以根据接收的消息级别决定是否记录或者忽略。
以下是一个简单的例子,展示如何在应用程序启动时只保留`qWarning`和更高的级别(如`qCritical`和`qFatal`)的输出:
```cpp
#include <QCoreApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
// 创建一个自定义的message handler
std::function<void(const QMessageLogContext &, const QString &msg)> customHandler = [](const QMessageLogContext &context, const QString &msg) {
if (context.category() >= QMessageLogger::Warning) { // 检查类别是否大于等于Warning级别
qDebug() << "Custom Handler: " << context.categoryName() << ": " << msg;
}
};
// 设置message handler
app.setMessageHandler(customHandler);
// 现在只有警告级别及以上的内容会被处理并打印
qWarning("This is a warning message");
qDebug("This will not be printed because it's at debug level");
return app.exec();
}
```
在这个示例里,`customHandler`只会对警告及以上的消息做出响应。如果你想关闭所有的调试输出,只需检查等级小于`Warning`即可。
阅读全文