QLoggingCategory类使用

news2025/3/11 12:39:31

QLoggingCategory类使用

QLoggingCategory的概述

  1. QLoggingCategory是Qt的日志策略类;可以通过声明不同的日志策略对象来输出不同的日志信息。打印信息类型如下:在这里插入图片描述
  2. Q_DECLARE_LOGGING_CATEGORY(name) 定义一个返回QLoggingCategory对象函数,定义源码如下:
#define Q_DECLARE_LOGGING_CATEGORY(name) \
   const QLoggingCategory &name();
  1. Q_LOGGING_CATEGORY(name, string) 是宏Q_DECLARE_LOGGING_CATEGORY定义函数的实现,定义源码如下:
#define Q_LOGGING_CATEGORY(name, ...) \
   const QLoggingCategory &name() \
   { \
       static const QLoggingCategory category(__VA_ARGS__); \
       return category; \
   }

4.在QLoggingCategory中,可以通过使用setFilterRules()函数来控制日志策略开启和关闭;其规则满足正则表达时,对于多个规则使用如下代码:

//test.cat.debug=false 设置test.cat 的 debug类型关闭,即 qCDebug(testCat)的打印不在输出;多个日志策略之间需要加"\n"作为结束符
QLoggingCategory::setFilterRules("qt.scenegraph.renderloop.debug=true\n" "test.cat.debug=false"); 

5.常用的一些日志策略:
qt.quick.image: 在QQuickPixmapcache 和图片缓存处理相关的日志输出
qt.scenegraph.* 和 QQuick 的scene graph 相关的日志输出
qt.qpa.* 和 Qt Platform 相关的 日志输出

QLoggingCategory 实例代码

//QLoggingCategory使用:
//step1 使用宏 Q_DECLARE_LOGGING_CATEGORY() 声明一个日志策略对象
//step2 使用宏 Q_LOGGING_CATEGORY() 创建一个日志策略对象
//step3 使用qCDebug(日志策略name)<<“打印内容” 输出需要调试信息
//step4 通过设置日志策略message类型的enable状态,来控制是否使能调试信息输出;

//此宏是一个函数声明函数
Q_DECLARE_LOGGING_CATEGORY(testCat)

//此宏是一个函数实现宏
Q_LOGGING_CATEGORY(testCat, "test.cat");

void testCategory() {
    
    qCDebug(testCat) << "testCat qCDebug()";
    qCWarning(testCat) << "testCat qCWarning()";
}

int main(int argc, char *argv[])
{
#if defined(Q_OS_WIN) && QT_VERSION_CHECK(5, 6, 0) <= QT_VERSION && QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif

    qputenv("QSG_INFO", "true");
    QGuiApplication app(argc, argv);
    
    //test.cat.debug=false 来屏蔽qCDebug(testCat) 的打印
    //qt.scenegraph.renderloop.debug=true 使能 qml 渲染循环的debug 打印
    QLoggingCategory::setFilterRules("qt.scenegraph.renderloop.debug=true\n" "test.cat.debug=false");           
    QQuickWindow::setGraphicsApi(QSGRendererInterface::OpenGL);
    
    testCategory();
    
    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/qt/qml/testqml/main.qml")));
    if (engine.rootObjects().isEmpty())
        return -1;
    QObject* rootObject = engine.rootObjects().first();
    QQuickWindow* window = qobject_cast<QQuickWindow*>(rootObject);

    if (window) {
        
        qDebug() << "Successfully retrieved QQuickWindow:" << window;
    }

    return app.exec();
}

QLoggingCategory 实例输出效果:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2313214.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GPU加速生信分析-宏基因组MAG去污染

Deepurify利用多模态深度语言模型来过滤污染的基因组&#xff0c;从而提高了宏基因组组装基因组&#xff08;MAGs&#xff09;的质量&#xff0c;并且可以利用GPU加速。 宏基因组组装的基因组 &#xff08;MAG&#xff09; 为使用宏基因组测序数据探索微生物暗物质提供了有价值…

数据结构(蓝桥杯常考点)

数据结构 前言&#xff1a;这个是针对于蓝桥杯竞赛常考的数据结构内容&#xff0c;基础算法比如高精度这些会在下期给大家总结 数据结构 竞赛中&#xff0c;时间复杂度不能超过10的7次方&#xff08;1秒&#xff09;到10的8次方&#xff08;2秒&#xff09; 空间限制&#x…

从0到1入门Linux

一、常用命令 ls 列出目录内容 cd切换目录mkdir创建新目录rm删除文件或目录cp复制文件或目录mv移动或重命名文件和目录cat查看文件内容grep在文件中查找指定字符串ps查看当前进程状态top查看内存kill终止进程df -h查看磁盘空间存储情况iotop -o直接查看比较高的磁盘读写程序up…

React:类组件(中)

dangerouslySetInnerHTML React写进{}内的东西&#xff0c;不允许被当作代码块解析&#xff0c;是为了防止xss攻击和代码注入 XSS&#xff08;跨站脚本攻击&#xff0c;Cross-Site Scripting&#xff09; 是一种常见的安全漏洞&#xff0c;攻击者通过注入恶意脚本到网页中&…

第六次CCF-CSP认证(含C++源码)

第六次CCF-CSP认证 数位之和&#xff08;easy&#xff09;思路及AC代码遇到的问题 开心消消乐&#xff08;easy&#xff09;思路及AC代码 画图&#xff08;mid&#xff09;思路及AC代码 数位之和&#xff08;easy&#xff09; 题目链接 思路及AC代码 既然题目要求我们输出各位…

SpringBoot 如何调用 WebService 接口

前言 调用WebService接口的方式有很多&#xff0c;今天记录一下&#xff0c;使用 Spring Web Services 调用 SOAP WebService接口 一.导入依赖 <!-- Spring Boot Web依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId…

算法 之 树形dp 树的中心、重心

文章目录 重心实践题目小红的陡峭值 在树的算法中&#xff0c;求解树的中心和重心是一类十分重要的算法 求解树的重心 树的重心的定义&#xff1a;重心是树中的一个节点&#xff0c;如果将这个点删除后&#xff0c;剩余各个连通块中点数的最大值最小&#xff0c;那么这个节点…

Docker 配置镜像源

》》Daemon {"registry-mirrors": ["https://docker.1ms.run","https://docker.xuanyuan.me"] }》》》然后在重新 docker systemctl restart docker

Linux 离线部署Ollama和DeepSeek-r1模型

都在复制粘贴联网状态下linux部署deepseek&#xff0c;离线状态下需要下载Ollama和DeepSeek模型&#xff0c;然后将下载包上传到linux中。 1、下载Ollama https://github.com/ollama/ollama/releases 注意&#xff1a;如果CentOS7建议安装V0.5.11版本&#xff0c;V0.5.13需要…

SQLAlchemy系列教程:如何执行原生SQL

Python中的数据库交互提供了高级API。但是&#xff0c;有时您可能需要执行原始SQL以提高效率或利用数据库特定的特性。本指南介绍在SQLAlchemy框架内执行原始SQL。 在SQLAlchemy中执行原生SQL SQLAlchemy虽然以其对象-关系映射&#xff08;ORM&#xff09;功能而闻名&#xff…

RuleOS:区块链开发的“新引擎”,点燃Web3创新之火

RuleOS&#xff1a;区块链开发的“新引擎”&#xff0c;点燃Web3创新之火 在区块链技术的浪潮中&#xff0c;RuleOS宛如一台强劲的“新引擎”&#xff0c;为个人和企业开发去中心化应用&#xff08;DApp&#xff09;注入了前所未有的动力。它以独特的设计理念和强大的功能特性&…

【编译器】VSCODE烧录ESP32-C3——xiaozhi智能聊天机器人固件

【编译器】VSCODE烧录ESP32-C3——xiaozhi智能聊天机器人固件 文章目录 [TOC](文章目录) 前言一、方法一&#xff1a;使用固件烧录工具1. 安装CH340驱动2. 打开FLASH_DOWNLOAD文件3. 选择芯片类型和烧录方式4. 选择烧录文件5. 参数配置 二、方法二&#xff1a;VSCODE导入工程1.…

显式 GC 的使用:留与去,如何选择?

目录 一、什么是显式 GC&#xff1f; &#xff08;一&#xff09; 垃圾回收的基本原理 &#xff08;二&#xff09;显式 GC 方法和行为 1. System.gc() 方法 2. 显式 GC 的行为 &#xff08;三&#xff09;显式 GC 的使用场景与风险 1. JVM 如何处理显式 GC 2. 显式 GC…

SpringMVC概述以及入门案例

目录 SpringMVC概述 为什么需要Spring MVC&#xff1f; SpringMVC入门 工作流程分析 SpringMVC概述 SpringMVC技术与Servlet技术功能等同&#xff0c;均属于Web层开发技术。SpringMVC是一种基于java实现MVC模型的轻量级Web框架。 为什么需要Spring MVC&#xff1f; 在传统J…

⭐LeetCode周赛 3468. 可行数组的数目——暴力与数学⭐

⭐LeetCode周赛 3468. 可行数组的数目——暴力与数学⭐ 示例 1&#xff1a; 输入&#xff1a;original [1,2,3,4], bounds [[1,2],[2,3],[3,4],[4,5]] 输出&#xff1a;2 解释&#xff1a; 可能的数组为&#xff1a; [1, 2, 3, 4] [2, 3, 4, 5] 示例 2&#xff1a; 输入&…

javaEE初阶————多线程进阶(2)

今天来继续带大家学习多线程进阶部分啦&#xff0c;今天是最后一期啦&#xff0c;下期带大家做一些多线程的题&#xff0c;我们就可以开始下一个环节啦&#xff1b; 1&#xff0c;JUC&#xff08;java.util.concurrent&#xff09;的常见类 1&#xff09;Callable 接口 我们之…

maven无法解析插件 org.apache.maven.plugins:maven-jar-plugin:3.4.1

解决流程 1.修改maven仓库库地址 2.删除本地的maven仓库 maven插件一直加载有问题: 无法解析插件 org.apache.maven.plugins:maven-jar-plugin:3.4.1 开始以为maven版本有问题&#xff0c;重装了maven&#xff0c;重装了idea工具。结果问题还是没解决。研究之后发现&#xf…

Android Studio右上角Gradle 的Task展示不全

Android Studio 版本如下&#xff1a;Android Studio lguana|2023.21, 发现Gradle 的Tasks阉割严重&#xff0c;如下图&#xff0c;只显示一个other 解决方法如下&#xff1a;**Setting>Experimental>勾选Configure all gradle tasks during Gradle Sync(this can make…

UDP协议 TCP协议(格式 超时重传 滑动窗口 拥塞控制...)

UDP协议 格式 UDP协议头部格式由8个字节组成&#xff0c;由4个2字节大小的字段组成。 源端口&#xff08;Source Port&#xff0c;16 位&#xff09;&#xff1a; 发送端的端口号&#xff0c;标识数据从哪个端口发出。如果不需要&#xff0c;则可以填 0。 目标端口&#xff0…

爱普生温补晶振 TG5032CFN高精度稳定时钟的典范

在科技日新月异的当下&#xff0c;众多领域对时钟信号的稳定性与精准度提出了极为严苛的要求。爱普生温补晶振TG5032CFN是一款高稳定性温度补偿晶体振荡器&#xff08;TCXO&#xff09;。该器件通过内置温度补偿电路&#xff0c;有效抑制环境温度变化对频率稳定性的影响&#x…