自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 Qt源码杂谈&心得

通过对Qt信号槽、绘制相关源码的学习,整理了一些对后续Windows、Qt、C++开发有帮助的技术点。

2023-12-27 22:20:51 857

原创 Qt内嵌web技术及透明问题解决

本节所说的冲突,存在于以Qt作为UI框架、用winId作为视频渲染句柄的业务中,如果不用winId渲染视频,使用Qt提供的QSurface相关模块,那就不存在这个问题。但是,目前大部分Windows视频渲染业务,还是基于WinId,特别是要求硬件渲染的场景。这冲突,深入点看,是QWidget属性与之间的冲突,是Qt渲染和Windows原生窗体之间的不兼容。Qt官方也有建议,可以完全用Qt渲染或转成QPixmap再绘制,来实现透明窗体上的视频渲染,在这不再多赘述。

2023-12-27 08:24:14 1163

原创 QTreeView使用整理

Model/View架构分为三部分:模型、视图和委托。主要目的是将数据的存储与显示分离。Model模型:对外提供标准接口存取数据,不关心数据如何显示。View视图:自定义数据的显示方式,不关心数据如何组织存储。Delegate委托:在视图的基础上可以自定义特殊的显示和编辑效果。一般只有Model与内存上的原始数据打交道,通过原始数据构造一个Model,然后View从Model取数据进行展示。

2023-08-08 21:33:06 1549 1

原创 Qt多进程开发

包含所需库,定义发送的自定义类型、接收消息的窗体标题。自定义类型可以处理消息过多情况下,对消息的区分,如果不需要也可以去掉。comment。

2023-07-15 08:19:39 1300

原创 Windows消息机制

Windows程序设计是一种事件驱动的程序设计模式,主要是基于消息的。消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。本文主要就几个基本概念和消息收发过程来介绍Windows消息机制。

2023-07-05 21:22:07 1004

原创 Qt多线程用法汇总

对于界面开发而言,多线程一个非常重要的作用就是将复杂的运算处理分开执行,避免造成界面的卡顿和冻结,甚至被系统强制关闭。另外,使用多线程编程可以最大限度地调用CPU资源,尤其对于多处理器系统。本文基于Visual Studio 2015、Qt5.6.3的项目,整理了多种Qt多线程技术的实例和介绍,并简单归纳了使用场景和注意事项。

2023-07-05 21:12:48 820

原创 Qt信号槽connect用法整理

自Qt 5.0以来,Qt提供了两种C++信号槽connect的写法:string-based和functor-based。类型检查时机运行时编译时隐式类型转换Yes连接signals和lambda表达式Yes连接signals到更多参数的slots(使用默认参数)Yes连接C++函数和QML函数Yes当对象的signal和slot重载时写法简单复杂。

2023-07-02 20:28:11 1534

原创 Qt动画技术汇总

以QAbstractState为基类的QState,以及QFinalState,QHistoryState等表示状态的类以QAbstractTransition为基类的用来表示各类状态转换行为(Transition)的类(包括:事件触发/信号触发/鼠标键盘触发的转换等类别)QStateMachine状态机类。

2023-07-01 13:18:57 2736 1

原创 Qt事件处理汇总

QT事件产生后会被立即发送到相应的QWidget对象相应的QWidget中的event(QEvent *)进行事件处理event(QEvent *)根据事件类型调用不同的事件处理函数在事件处理函数中发送QT预定义的信号调用信号关联的槽函数public:protected:elseMain.cpp编译运行程序,鼠标点击按钮后打印出“Left press”字符串,没有打印出“child clicked”字符串。

2023-06-23 18:12:56 1213 2

原创 Qt/C++内存泄漏汇总

Qt 简化了我们对内存的管理,但是,由于它会在不太注意的地方调用 delete,所以,使用时还是要当心。

2023-06-23 12:51:25 496

原创 C++json库nlohmannjson使用介绍

最近项目中需要使用C++ Json序列化和反序列化,顺便调研了下目前比较好用的C++ json库,发现nlohmann/json应该是其中相对较好的json库。nlohmann/json有如下主要优点:1、语法比较直观,类似于Python。2、要使用nlohmann/json,只需要引入头文件json.hpp。无需引入lib之类的。3、经过非常多的测试,代码质量非常高,没有内存泄漏。4、内存效率、速度相对其它库较高。json j;}},}}

2023-06-17 22:55:54 6130 1

原创 QSS语法介绍

QSS是Qt Style Sheets的简称,也就是Qt样式表,是Qt提供的一种用来自定义控件外观的机制。QSS大量参考了CSS的内容,但功能比CSS弱很多,体现在选择器要少、属性也少很多,并且不是所有属性都可以用在Qt的所有控件上。

2023-06-17 22:50:29 1349

原创 Windows进程分析工具

客户端优化分析,需要采集数据,对比竞品;用什么工具(方法)采集数据,如何绘图对照呢?你给出的CPU/内存测试结果,和其它测试电脑上表现不一致啊,怎么办?又要手动记录任务管理器进程信息,写入excel生成曲线图吗?然后,发现了客户端确实存在着问题,比如内存上涨过多、CPU占用高于竞品;如何进行工程诊断,最好具体到函数调用栈呢?然后,如何深入竞品的行为分析呢?

2023-06-13 12:54:12 1208

原创 Windows上Qt/C++应用安装包制作

为什么要制作安装包,是产品需求,还是让应用安装更简单?本文将结合一些流行的安装包制作工具和自定义方法,为你提供完整的参考。并就windows上经常遇到的exe依赖dll丢失问题,提供详尽的问题场景和解决思路,帮助你更顺利的制作安装包。为了更好的定制安装包,在实际项目中我们使用了MFC来开发安装、卸载程序。定制包括两方面,UI和安装流程。UI对于不同项目,可能差异较大,安装流程却是业界通用的。在这里,我简单介绍下一般定制安装包需要实现哪些核心步骤,及其负责的功能。

2023-06-11 21:30:22 1424

原创 客户端启动耗时分析:基于Qt、C++的Windows应用程序

客户端的启动作为所有交互的开端,经常被拿来进行分析、比较和优化,其中讨论比较多的就是启动耗时。本文整理了一些基于Qt、C++的Windows客户端的启动耗时问题和分析经验。

2023-06-11 20:51:46 698

原创 一些C++、Qt实用技巧

明显,带128的比不带128的代码,执行速度快很多。L1 Cache是最离CPU最近的,它容量最小,速度最快,每个CPU都有L1 Cache,见上图,其实每个CPU都有两个L1 Cache,一个是L1D Cache,用于存取数据,另一个是L1I Cache,用于存取指令。pImpl最需要关注的就是共有类的复制语义,因为实现类是以指针的方式作为共有类的一个成员,而默认C++生成的拷贝操作只会执行对象的浅拷贝,这显然违背了pImpl的原本意图,除非是真的想要底层共享一个实现对象。

2023-06-11 18:44:05 425

原创 Qt、C++动态UI

在项目实践中,最简单的更新应用UI交互的方式就是更新整个安装包。随着业务的发展,一个客户端需要同时适配多种业务,每种业务都有自己独特的设置页,业务之间又较为独立。如果将这些UI页面、业务代码都在一份代码上维护,加各种条件分支,维护会越来越困难:容易出错、程序体积增大、测试工作量增加,而且无法满足快速迭代的需求。因此,如果能针对不同业务,提供各异的插件、描述文件动态更新UI交互,就能比较好的满足业务需求。而且动态UI只需要更新插件、描述文件,也能够运行时更新,对用户体验、客户端其它功能影响能够降到非常低。

2023-06-10 17:39:00 1067

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除