<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_31286321的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_31286321</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_31286321]]></copyright><item><title><![CDATA[Qt源码杂谈&心得]]></title><link>https://blog.youkuaiyun.com/qq_31286321/article/details/135257240</link><guid>https://blog.youkuaiyun.com/qq_31286321/article/details/135257240</guid><author>qq_31286321</author><pubDate>Wed, 27 Dec 2023 22:20:51 +0800</pubDate><description><![CDATA[通过对Qt信号槽、绘制相关源码的学习，整理了一些对后续Windows、Qt、C++开发有帮助的技术点。]]></description><category></category></item><item><title><![CDATA[Qt内嵌web技术及透明问题解决]]></title><link>https://blog.youkuaiyun.com/qq_31286321/article/details/135183261</link><guid>https://blog.youkuaiyun.com/qq_31286321/article/details/135183261</guid><author>qq_31286321</author><pubDate>Wed, 27 Dec 2023 08:24:14 +0800</pubDate><description><![CDATA[本节所说的冲突，存在于以Qt作为UI框架、用winId作为视频渲染句柄的业务中，如果不用winId渲染视频，使用Qt提供的QSurface相关模块，那就不存在这个问题。但是，目前大部分Windows视频渲染业务，还是基于WinId，特别是要求硬件渲染的场景。这冲突，深入点看，是QWidget属性与之间的冲突，是Qt渲染和Windows原生窗体之间的不兼容。Qt官方也有建议，可以完全用Qt渲染或转成QPixmap再绘制，来实现透明窗体上的视频渲染，在这不再多赘述。]]></description><category></category></item><item><title><![CDATA[QTreeView使用整理]]></title><link>https://blog.youkuaiyun.com/qq_31286321/article/details/132175586</link><guid>https://blog.youkuaiyun.com/qq_31286321/article/details/132175586</guid><author>qq_31286321</author><pubDate>Tue, 08 Aug 2023 21:33:06 +0800</pubDate><description><![CDATA[Model/View架构分为三部分：模型、视图和委托。主要目的是将数据的存储与显示分离。Model模型：对外提供标准接口存取数据，不关心数据如何显示。View视图：自定义数据的显示方式，不关心数据如何组织存储。Delegate委托：在视图的基础上可以自定义特殊的显示和编辑效果。一般只有Model与内存上的原始数据打交道，通过原始数据构造一个Model，然后View从Model取数据进行展示。]]></description><category></category></item><item><title><![CDATA[Qt多进程开发]]></title><link>https://blog.youkuaiyun.com/qq_31286321/article/details/131734554</link><guid>https://blog.youkuaiyun.com/qq_31286321/article/details/131734554</guid><author>qq_31286321</author><pubDate>Sat, 15 Jul 2023 08:19:39 +0800</pubDate><description><![CDATA[包含所需库，定义发送的自定义类型、接收消息的窗体标题。自定义类型可以处理消息过多情况下，对消息的区分，如果不需要也可以去掉。comment。]]></description><category></category></item><item><title><![CDATA[Windows消息机制]]></title><link>https://blog.youkuaiyun.com/qq_31286321/article/details/131564107</link><guid>https://blog.youkuaiyun.com/qq_31286321/article/details/131564107</guid><author>qq_31286321</author><pubDate>Wed, 05 Jul 2023 21:22:07 +0800</pubDate><description><![CDATA[Windows程序设计是一种事件驱动的程序设计模式，主要是基于消息的。消息本身是作为一个记录传递给应用程序的，这个记录中包含了消息的类型以及其他信息。本文主要就几个基本概念和消息收发过程来介绍Windows消息机制。]]></description><category></category></item><item><title><![CDATA[Qt多线程用法汇总]]></title><link>https://blog.youkuaiyun.com/qq_31286321/article/details/131563802</link><guid>https://blog.youkuaiyun.com/qq_31286321/article/details/131563802</guid><author>qq_31286321</author><pubDate>Wed, 05 Jul 2023 21:12:48 +0800</pubDate><description><![CDATA[对于界面开发而言，多线程一个非常重要的作用就是将复杂的运算处理分开执行，避免造成界面的卡顿和冻结，甚至被系统强制关闭。另外，使用多线程编程可以最大限度地调用CPU资源，尤其对于多处理器系统。本文基于Visual Studio 2015、Qt5.6.3的项目，整理了多种Qt多线程技术的实例和介绍，并简单归纳了使用场景和注意事项。]]></description><category></category></item><item><title><![CDATA[Qt信号槽connect用法整理]]></title><link>https://blog.youkuaiyun.com/qq_31286321/article/details/131504726</link><guid>https://blog.youkuaiyun.com/qq_31286321/article/details/131504726</guid><author>qq_31286321</author><pubDate>Sun, 02 Jul 2023 20:28:11 +0800</pubDate><description><![CDATA[自Qt 5.0以来，Qt提供了两种C++信号槽connect的写法：string-based和functor-based。类型检查时机运行时编译时隐式类型转换Yes连接signals和lambda表达式Yes连接signals到更多参数的slots（使用默认参数）Yes连接C++函数和QML函数Yes当对象的signal和slot重载时写法简单复杂。]]></description><category></category></item><item><title><![CDATA[Qt动画技术汇总]]></title><link>https://blog.youkuaiyun.com/qq_31286321/article/details/131488677</link><guid>https://blog.youkuaiyun.com/qq_31286321/article/details/131488677</guid><author>qq_31286321</author><pubDate>Sat, 01 Jul 2023 13:18:57 +0800</pubDate><description><![CDATA[以QAbstractState为基类的QState，以及QFinalState，QHistoryState等表示状态的类以QAbstractTransition为基类的用来表示各类状态转换行为（Transition）的类（包括：事件触发/信号触发/鼠标键盘触发的转换等类别）QStateMachine状态机类。]]></description><category></category></item><item><title><![CDATA[Qt事件处理汇总]]></title><link>https://blog.youkuaiyun.com/qq_31286321/article/details/131352849</link><guid>https://blog.youkuaiyun.com/qq_31286321/article/details/131352849</guid><author>qq_31286321</author><pubDate>Fri, 23 Jun 2023 18:12:56 +0800</pubDate><description><![CDATA[QT事件产生后会被立即发送到相应的QWidget对象相应的QWidget中的event(QEvent *)进行事件处理event(QEvent *)根据事件类型调用不同的事件处理函数在事件处理函数中发送QT预定义的信号调用信号关联的槽函数public:protected:elseMain.cpp编译运行程序，鼠标点击按钮后打印出“Left press”字符串，没有打印出“child clicked”字符串。]]></description><category></category></item><item><title><![CDATA[Qt/C++内存泄漏汇总]]></title><link>https://blog.youkuaiyun.com/qq_31286321/article/details/131349722</link><guid>https://blog.youkuaiyun.com/qq_31286321/article/details/131349722</guid><author>qq_31286321</author><pubDate>Fri, 23 Jun 2023 12:51:25 +0800</pubDate><description><![CDATA[Qt 简化了我们对内存的管理，但是，由于它会在不太注意的地方调用 delete，所以，使用时还是要当心。]]></description><category></category></item><item><title><![CDATA[C++json库nlohmannjson使用介绍]]></title><link>https://blog.youkuaiyun.com/qq_31286321/article/details/131265783</link><guid>https://blog.youkuaiyun.com/qq_31286321/article/details/131265783</guid><author>qq_31286321</author><pubDate>Sat, 17 Jun 2023 22:55:54 +0800</pubDate><description><![CDATA[最近项目中需要使用C++ Json序列化和反序列化，顺便调研了下目前比较好用的C++ json库，发现nlohmann/json应该是其中相对较好的json库。nlohmann/json有如下主要优点：1、语法比较直观，类似于Python。2、要使用nlohmann/json，只需要引入头文件json.hpp。无需引入lib之类的。3、经过非常多的测试，代码质量非常高，没有内存泄漏。4、内存效率、速度相对其它库较高。json j;}},}}]]></description><category></category></item><item><title><![CDATA[QSS语法介绍]]></title><link>https://blog.youkuaiyun.com/qq_31286321/article/details/131265728</link><guid>https://blog.youkuaiyun.com/qq_31286321/article/details/131265728</guid><author>qq_31286321</author><pubDate>Sat, 17 Jun 2023 22:50:29 +0800</pubDate><description><![CDATA[QSS是Qt Style Sheets的简称，也就是Qt样式表，是Qt提供的一种用来自定义控件外观的机制。QSS大量参考了CSS的内容，但功能比CSS弱很多，体现在选择器要少、属性也少很多，并且不是所有属性都可以用在Qt的所有控件上。]]></description><category></category></item><item><title><![CDATA[Windows进程分析工具]]></title><link>https://blog.youkuaiyun.com/qq_31286321/article/details/131180600</link><guid>https://blog.youkuaiyun.com/qq_31286321/article/details/131180600</guid><author>qq_31286321</author><pubDate>Tue, 13 Jun 2023 12:54:12 +0800</pubDate><description><![CDATA[客户端优化分析，需要采集数据，对比竞品；用什么工具（方法）采集数据，如何绘图对照呢？你给出的CPU/内存测试结果，和其它测试电脑上表现不一致啊，怎么办？又要手动记录任务管理器进程信息，写入excel生成曲线图吗？然后，发现了客户端确实存在着问题，比如内存上涨过多、CPU占用高于竞品；如何进行工程诊断，最好具体到函数调用栈呢？然后，如何深入竞品的行为分析呢？]]></description><category></category></item><item><title><![CDATA[Windows上Qt/C++应用安装包制作]]></title><link>https://blog.youkuaiyun.com/qq_31286321/article/details/131158150</link><guid>https://blog.youkuaiyun.com/qq_31286321/article/details/131158150</guid><author>qq_31286321</author><pubDate>Sun, 11 Jun 2023 21:30:22 +0800</pubDate><description><![CDATA[为什么要制作安装包，是产品需求，还是让应用安装更简单？本文将结合一些流行的安装包制作工具和自定义方法，为你提供完整的参考。并就windows上经常遇到的exe依赖dll丢失问题，提供详尽的问题场景和解决思路，帮助你更顺利的制作安装包。为了更好的定制安装包，在实际项目中我们使用了MFC来开发安装、卸载程序。定制包括两方面，UI和安装流程。UI对于不同项目，可能差异较大，安装流程却是业界通用的。在这里，我简单介绍下一般定制安装包需要实现哪些核心步骤，及其负责的功能。]]></description><category></category></item><item><title><![CDATA[客户端启动耗时分析：基于Qt、C++的Windows应用程序]]></title><link>https://blog.youkuaiyun.com/qq_31286321/article/details/131157451</link><guid>https://blog.youkuaiyun.com/qq_31286321/article/details/131157451</guid><author>qq_31286321</author><pubDate>Sun, 11 Jun 2023 20:51:46 +0800</pubDate><description><![CDATA[客户端的启动作为所有交互的开端，经常被拿来进行分析、比较和优化，其中讨论比较多的就是启动耗时。本文整理了一些基于Qt、C++的Windows客户端的启动耗时问题和分析经验。]]></description><category></category></item><item><title><![CDATA[一些C++、Qt实用技巧]]></title><link>https://blog.youkuaiyun.com/qq_31286321/article/details/131150023</link><guid>https://blog.youkuaiyun.com/qq_31286321/article/details/131150023</guid><author>qq_31286321</author><pubDate>Sun, 11 Jun 2023 18:44:05 +0800</pubDate><description><![CDATA[明显，带128的比不带128的代码，执行速度快很多。L1 Cache是最离CPU最近的，它容量最小，速度最快，每个CPU都有L1 Cache，见上图，其实每个CPU都有两个L1 Cache，一个是L1D Cache，用于存取数据，另一个是L1I Cache，用于存取指令。pImpl最需要关注的就是共有类的复制语义，因为实现类是以指针的方式作为共有类的一个成员，而默认C++生成的拷贝操作只会执行对象的浅拷贝，这显然违背了pImpl的原本意图，除非是真的想要底层共享一个实现对象。]]></description><category></category></item><item><title><![CDATA[Qt、C++动态UI]]></title><link>https://blog.youkuaiyun.com/qq_31286321/article/details/131144112</link><guid>https://blog.youkuaiyun.com/qq_31286321/article/details/131144112</guid><author>qq_31286321</author><pubDate>Sat, 10 Jun 2023 17:39:00 +0800</pubDate><description><![CDATA[在项目实践中，最简单的更新应用UI交互的方式就是更新整个安装包。随着业务的发展，一个客户端需要同时适配多种业务，每种业务都有自己独特的设置页，业务之间又较为独立。如果将这些UI页面、业务代码都在一份代码上维护，加各种条件分支，维护会越来越困难：容易出错、程序体积增大、测试工作量增加，而且无法满足快速迭代的需求。因此，如果能针对不同业务，提供各异的插件、描述文件动态更新UI交互，就能比较好的满足业务需求。而且动态UI只需要更新插件、描述文件，也能够运行时更新，对用户体验、客户端其它功能影响能够降到非常低。]]></description><category></category></item></channel></rss>