在dll sdk工程里,复制粘贴,spdlog相关的工程文件,参考[[spdlog功能整理]] ![[Pasted image 20240804162831.png]] 回到工程,右键,点击添加 ![[Pasted image 20240804163536.png]] ![[Pasted image 20240804163606.png]] 命名为Logger,是调用spdlog相关 ![[Pasted image 20240804163803.png]] 引用的spdlog相关,头文件 ![[Pasted image 20240804163919.png]] 声明日志系统的初始化、清理、级别,设置日志对应的Dialog窗体、颜色相关; qtMessageHandler函数,是处理不同级别的日志信息,主要是切换颜色等操作; 私有变量中,包含自动管理内存的,智能指针share_ptr,参考[[shared_ptr]],还有log日志的输出文件路径,和log日志颜色; ![[Pasted image 20240804163946.png]] 源文件,include引用的,相关头文件 ![[Pasted image 20240804165151.png]] logger相关的日志文件输出路径、颜色,对应的dialog窗体等,初始化 ![[Pasted image 20240804165449.png]] 初始化initialize函数的具体实现,传参是输出log信息的文件夹和文件路径; 在最开始的时候,是根据日期信息,生成log日志文件的命名; 然后,创建标准输出的,彩色日志,通过set_pattern的形式,设置显示模式; 通过make_shared的形式,完成智能指针的创建; 再通过set_level的api接口,设置日志级别,再通过qInstallMessageHandler和qtMessageHandler配合,对不同形式的日志输出,做不同处理; ![[Pasted image 20240804165604.png]] 三个函数实现,分别是清理日志实例,设置日志输出级别,还有设置日志对应的Dialog窗体 ![[Pasted image 20240804170114.png]] qtMessageHandler函数接口的实现,对应不同type类型的log信息,输出不同样式的log信息,最后,通过QMetaObject元对象,使用append的形式,完成日志文本的输出设置,参考[[QMetaObject元对象和属性机制]] ![[Pasted image 20240804170215.png]] ![[Pasted image 20240804170338.png]] 创建Dialog窗体,对应spdlog插件功能 ![[Pasted image 20240804203237.png]] ![[Pasted image 20240804203311.png]] ![[Pasted image 20240804203327.png]] 命名为DebugDialog ![[Pasted image 20240804203353.png]] 打开窗口ui,设置布局相关 ![[Pasted image 20240804203434.png]] 拖曳组件过去 ![[Pasted image 20240806144936.png]] 勾选,设置只读 ![[Pasted image 20240806145109.png]] 设置一下,根组件的宽高 ![[Pasted image 20240806145214.png]] 布局设置,就会自适应 ![[Pasted image 20240806145352.png]] 保存修改,回到头文件,声明关闭事件相关函数; initShortcut是初始化快捷键的函数,findSelectedText是寻找,选中文本的函数,getSelectedText获取选中文本内容的函数,flush和append,都是刷新文本显示相关; ![[Pasted image 20240806145512.png]] 源文件,引用的相关头文件 ![[Pasted image 20240806153638.png]] findSelectedText函数,查找文本的逻辑实现,在textEdit组件中,根据光标,检索搜寻文本即可 ![[Pasted image 20240806154253.png]] getSelectedText函数,是根据光标,获取到,选中的文本 ![[Pasted image 20240806154416.png]] 刷新文本相关的实现 ![[Pasted image 20240806154700.png]] initShortcut函数,通过代码,实例化一个新的QInputDialog输入窗体,设置好标题和按钮、宽高等,是用来搜索文本内容的; 也实例化一个QShotcut快捷键相关,是`Ctrl+F`组合键,进行检索操作,参考[[Qt QShortCut 快捷键 原理、实现和应用]]; connect关联上,上述解析 findSelectedText检索文本的函数实现; ![[Pasted image 20240806154743.png]] 析构函数,窗体事件关闭相关,其中closeEvent关闭函数,虽然外部没有调用,但实际上,它是一个虚函数的重写,qt内部关闭窗体的时候,会自动调用,参考[[QT中的closeEvent方法]] ![[Pasted image 20240806155302.png]] 窗体的构造函数,先通过setWindowFlags设置窗体属性,然后resize重新设置一下,窗体宽高; 参考[[Qt 中 deleteLater 使用总结]],通过connect的形式,把窗体关闭和退出,和对象删除,关联起来; 最后,再调用一下,内部的快捷键设置,还有文本刷新相关; ![[Pasted image 20240806155721.png]]