Qt_Unity_PC_SDK总结_第六章.md 4.3 KB

在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]]