Qt
文章平均质量分 86
进击ing小白
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Qt 无边框窗口进阶指南
本文深入解析了 Qt 环境下无边框窗口的完整实现方案。针对无边框窗口移除系统标题栏后引发的拖动、拉伸等核心痛点,重点讲解了如何借助 Win32 API 与 Windows 消息机制(WM_NCHITTEST、WM_NCCALCSIZE)进行系统级处理,实现流畅的窗口移动、精准的尺寸调整以及“置顶全屏”等特殊交互模式。文章提供了详尽的代码示例,并通过对比 Qt 原生方案与系统级实现的差异,揭示了 Win32 消息机制在桌面开发中的独特价值,为构建现代化、高性能的桌面应用提供了可靠的技术参考。原创 2026-08-25 14:49:25 · 237 阅读 · 0 评论 -
海外CMS系统中的RTL字符显示问题
本文总结了CMS系统在海外版本RTL(从右向左)语言环境下的金额显示问题及解决方案。由于Unicode双向文本算法会影响货币符号的位置,导致配置前置的货币符号被自动后置。通过插入LRM/RLM控制字符主动干预文本方向,同时在需要固定文本组合的场景使用LRE/PDF控制字符,彻底解决了UI、票据和Excel导出中的金额显示问题,为国际化适配提供了实践经验。原创 2026-08-22 08:15:15 · 335 阅读 · 0 评论 -
QBasicTimer vs QTimer —— 选择正确的计时器
这篇博客对比了QBasicTimer与QTimer的适用场景和性能,指出QBasicTimer更高效但API较底,QTimer更便捷但开销略高。文中澄清了两大误区:QBasicTimer同样能使用lambda,且也支持跨线程(需配合事件和线程)。通过实际案例演示了在实时性要求高的场景下选用QBasicTimer,并验证了其在高频任务中的性能优势。结论是:追求快速开发用QTimer,追求极致性能用QBasicTimer。原创 2026-08-21 16:46:51 · 336 阅读 · 0 评论 -
QCustomPlot的使用介绍
本文介绍了在Qt开发中使用QCustomPlot库实现高性能数据可视化的经验。针对道路车流数据可视化大屏项目中QChart性能不足的问题,通过改用QCustomPlot库成功解决了大数据量实时刷新的性能瓶颈。文章详细对比了QCustomPlot与QChart的性能差异,并提供了完整的折线图实现代码示例,包括数据绑定、样式设置、交互功能(点击显示数值、右键导出图片)等核心功能。同时总结了常见图表类型(折线图、散点图、柱状图等)的绘制方法和注意事项,特别强调了大数据量场景下的性能优化技巧。该方案已在实际项目中验原创 2026-05-13 16:42:50 · 546 阅读 · 0 评论 -
指针类型转换
本文系统介绍了C++中的四种类型转换方式及其在Qt中的特殊实现。第一部分详细解析了dynamic_cast(运行时多态类型检查)、static_cast(编译时类型转换)、reinterpret_cast(底层位模式重解释)和const_cast(常量属性移除)的原理与使用场景。第二部分重点阐述了Qt特有的qobject_cast机制,通过与dynamic_cast对比,突出其基于元对象系统的高效ID比较优势。文章指出qobject_cast在Qt项目中的优先适用性,以及dynamic_cast作为备选方案原创 2025-02-09 11:54:52 · 405 阅读 · 0 评论 -
静态库和动态库的创建和调用方法
本文系统介绍了静态库和动态库的开发与应用。首先分析了C++程序构建的四个核心阶段(预处理、编译、链接、运行),详细对比了静态库和动态库在构建过程、内存使用、部署维护等方面的差异。然后通过具体案例演示了Windows平台下静态库(.lib)和动态库(.dll)的创建、使用及发布流程,包括三种动态库调用方式(隐式链接、显式链接、Qt封装)。针对跨编译器兼容性问题,深入探讨了调用约定(__stdcall/__cdecl)、链接规范(extern "C")和导出导入机制(__declspec)的原创 2025-07-19 08:47:11 · 449 阅读 · 0 评论 -
项目国际化中QLocale的使用
本文介绍了Qt框架中QLocale模块在停车收费软件国际化中的应用。针对不同国家地区在货币、数字和时间格式上的差异,通过LocalManager单例类封装QLocale功能,实现了多国本地化支持。重点解决了时间显示受操作系统时区影响的问题,提出使用固定英语区域格式化的解决方案。文章包含完整的代码实现,展示了价格格式化、时间转换等核心功能,为跨地区软件开发提供了实用参考。原创 2025-11-24 15:01:41 · 254 阅读 · 0 评论 -
项目开发中QTest单元测试的使用
本文介绍了Qt测试框架QTest在GUI项目中的应用优势及其核心功能。针对Qt深度集成的项目,QTest相比GoogleTest在GUI测试方面更高效,支持轻量化宏驱动和数据驱动测试。文章详细说明了QTest的断言宏、数据驱动测试宏(addColumn/newRow/QFETCH)、GUI交互模拟宏(键盘鼠标操作)以及性能测试宏(QBENCHMARK)的使用方法,并提供了一个完整的测试类实现示例,展示如何测试计算器功能,包括数据驱动测试、信号验证和GUI交互测试。最后通过QTEST_MAIN宏简化测试执行流原创 2025-11-22 10:50:28 · 891 阅读 · 2 评论 -
托盘程序在实际项目中的应用
本文介绍了在停车场项目中运用系统托盘功能的实现方法。通过Qt的QSystemTrayIcon类,可以方便地创建托盘图标,实现最小化到托盘而非退出的功能。文章详细说明了图标控制、提示信息、消息通知和右键菜单等核心功能,并提供了代码示例。在实际应用中,通过拦截关闭事件实现窗口隐藏到托盘,同时支持双击唤醒主界面。该方案有效解决了后台程序运行期间界面干扰问题,特别适合需要长期运行的服务类应用程序。原创 2025-11-03 14:41:24 · 975 阅读 · 0 评论 -
QGraphicsEffect控件添加特效
本文介绍了Qt中的QGraphicsEffect图形效果框架及其常见子类的应用。QGraphicsEffect作为基类,可在不改变控件几何结构的情况下实现阴影、模糊、着色和透明度等视觉效果。具体讲解了四种常用子类:QGraphicsDropShadowEffect设置阴影效果,QGraphicsBlurEffect实现高斯模糊,QGraphicsColorizeEffect用于整体着色,以及QGraphicsOpacityEffect控制透明度。文中提供了详细的代码示例,包括参数设置说明和与QPropert原创 2025-10-28 17:58:54 · 611 阅读 · 0 评论 -
项目优化中对象的隐式共享
本文介绍了Qt框架中通过继承QSharedData实现自定义数据隐式共享的方法。Qt内置类型如QString采用隐式共享技术(读时共享,写时复制)提升性能和内存效率。开发者可让自定义类继承QSharedData,并用QSharedDataPointer管理数据,实现类似特性。文章详细展示了PersonData类的实现过程,包括数据定义、指针管理和测试用例,并对比了与std::shared_ptr的区别。最后总结了Qt隐式共享的优势:提升内存效率、优化性能、简化API,并给出了实际开发中的使用建议。原创 2025-07-29 16:22:04 · 220 阅读 · 0 评论 -
Qt WebEngine Widgets的使用
Qt WebEngine中主要分为三个模块:Qt WebEngine Widgets模块,主要用于创建基于C++ Widgets部件的Web程序;Qt WebEngine模块用来创建基于Qt Quick的Web程序;Qt WebEngine Core模块用来与Chromeium交互。网页玄幻和JavaScript的执行从GUI进程分离到Qt WebEngine进程,主要架构如下。原创 2025-07-24 19:30:45 · 713 阅读 · 0 评论 -
项目优化之开机自启动
摘要:本文介绍了在Windows系统中实现Qt程序开机自启动的方法。通过修改注册表HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run路径实现自启动功能,并提供了使用QSettings操作注册表的具体代码示例。文章还强调了需要管理员权限才能访问注册表,以及在64位系统上32位程序可能遇到的注册表重定向问题。该方案特别适用于无人值守的停车管理系统等需要自动恢复运行的场景。原创 2025-07-18 13:57:38 · 433 阅读 · 0 评论 -
MVC框架在项目数据处理中的应用
本文介绍了MVC(Model-View-Controller)架构及其在Qt框架中的实现。MVC将数据与界面分离,Qt4引入的model/view架构简化了这一模式,通过模型索引访问数据,并使用委托处理用户输入和自定义渲染。文章详细说明了模型、视图和委托的交互方式,以及如何通过QAbstractItemModel和QAbstractItemView实现标准化接口。最后,以员工管理系统为例,展示了如何通过自定义委托(如SpinBoxDelegate和ComBoxDelegate)实现不同视图(列表、表格、树形原创 2025-05-06 17:11:11 · 201 阅读 · 0 评论 -
项目优化中ini配置文件解析器
在停车管理项目中不同道闸口的终端配置可能不同,如靠近居民楼的道闸终端LED的语音播报音量和靠近马路的道闸门口不同;不同终端道闸锁闸时间也可能不同,诸如此类放在数据库中,不同的终端在启动时必须先连接到数据库才能加载,远没有本地配置文件方便,也不如配置文件方便技术支持修改方便,对于此类本地化配置的参数需要进行提取改写到本地配置文件中。原创 2025-04-17 23:42:20 · 777 阅读 · 0 评论 -
excel表格的读写
项目中产生的数据除了可视化处理经常也需要以excel的形式导入导出,如停车收费项目中月租车数据、账单数据和过车数据等经常需要从软件中检索导出备份或做账目统计,也有必要将导入的数据可导入软件,以便恢复数据。原创 2025-01-21 21:52:24 · 271 阅读 · 0 评论 -
Qt图形视图框架在项目中的应用
Qt图形试图框架是Qt库中用于创建2D图形用户界面的模块。它提供了丰富的绘图功能,支持绘制形状、文本、图像以及处理复杂的图形效果。通过使用Qt Graphics View框架,开发者可以构建交互式和动态的图形应用程序,如绘图软件、地图应用和数据可视化工具等。原创 2025-03-21 16:50:36 · 487 阅读 · 0 评论 -
QSplashScreen --软件启动前的交互
QSplashScreen 是 Qt 中的一个类,用于显示启动画面。它通常在应用程序启动时显示,以向用户显示应用程序正在启动的状态。启动画面可以是一个图片,也可以是一个包含了文本、图片等内容的窗口。//slots//protected 可以继承自绘。原创 2025-02-21 17:07:08 · 1278 阅读 · 0 评论 -
Qt程序退出相关资源释放问题
通过重写主界面的这个函数可在窗口关闭前执行一些自定义的操作,比如询问用户是否真的要关闭窗口,或者保存未保存的数据。如果该窗口是主窗口,且所有子窗口都已关闭,应用程序会退出,退出前会触发和aboutToQuit信号。• 当调用quit()时,它会退出主事件循环,触发QApplication::exec()返回,并关闭所有打开的窗口。• quit()通常用于在应用程序中实现“退出”功能,比如在菜单项的“退出”操作上绑定这个函数。• close()适用于关闭单个窗口或控件的场景,比如“关闭”按钮的操作。原创 2025-02-20 16:18:34 · 1672 阅读 · 0 评论 -
Qt中QApplication 类和uic、moc程序
这里main()把控制权转交给Qt,Qt完成事件处理工作,当应用程序退出的时候exec()的值就会返回。有时候新增的类,编译器由于某种原因一直生成不了moc_xxx.cpp文件,此时可以手动调用moc程序解决。在exec()中,Qt接受并处理用户和系统的事件并且把它们传递给适当的窗口部件。,程序中真正是通过这个类去控制界面文件,而不会直接操作界面文件。的形式记录界面的控件、属性、位置和布局等等,而实际。管理图形用户界面应用程序的控制流和主要设置。文件生成相关类文件ui_xxx.h。应用程序的初始化和结束。原创 2025-02-14 09:53:17 · 616 阅读 · 0 评论 -
Qt事件机制
事件(event)是由系统或者 Qt 本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件在对用户操作做出响应时发出,如键盘事件等;另一些事件则是由系统自动发出,如计时器事件。Qt 程序需要在main()函数创建一个QApplication对象,然后调用它的exec()函数。这个函数就是开始 Qt 的事件循环。在执行exec()函数之后,程序将进入事件循环来监听应用程序的事件。当事件发生时,Qt 将创建一个事件对象。Qt。原创 2025-02-13 22:39:13 · 1360 阅读 · 0 评论 -
项目优化中文件压缩
在停车收费项目中,一些车流量大的车厂日志信息文件增加的很快,虽然采用spdlog根据大小限制了每一份日志的大小,但是往往这种车流量大的车厂是一些大型商场,各种类型车辆收费不同,不同时间往往有不同的优惠,且跟车严重会带来不少各种各样的问题;日志需要保存的时间就更久一些,因此对于日志按照时间尺度进行打包压缩是一个很好的方案,先mark以下,待后续空闲补充该部分内容。原创 2025-01-21 22:00:54 · 313 阅读 · 0 评论 -
Qt元对象系统
元对象系统引用反射的基本思想。所谓反射,就是指对象成员的自我检查。使用反射编程(reflection programming),就可以编写出通用的操作,可对有各种不同结构的类进行操作。使用通用的值存储器QVariant,就可以按照一种统一的方式来对基本类型和其它的普通类型进行操作。 简而言之,所谓的反射模式,就是通过自己来查看所有的属性,通过自己的元对象属性来访问自己的全部属性,为什么不直接使用成员函数呢?使用成员函数过于繁琐,通过元对象对应的方法可以快速访问对象的属性 。原创 2025-02-09 22:59:46 · 1184 阅读 · 0 评论 -
正则表达式以及Qt中的使用
匹配下标.indexIn 匹配长度 .matchedLength。正则由表达式+量词+断言组成。原创 2025-01-23 21:37:08 · 823 阅读 · 0 评论 -
项目优化之文件监控
QFileSystemWatcher 是 Qt 框架中提供的一个类,用于监视文件系统中的文件和目录的变化。它允许你在文件或目录发生变化时接收通知,并可以用于监视文件的创建、删除、重命名以及内容修改等操作。这对于需要实时监控文件系统变化的应用程序是非常有用的。原创 2025-01-23 17:09:03 · 350 阅读 · 0 评论 -
无边框界面开发中鼠标事件不触发问题
Qt默认鼠标跟踪事件是关闭的,只有按下鼠标左键移动时才会触发;所以需要setMouseTracking(true)开启鼠标追踪事件。解决方案:将QMainWindow的子控件centralWidget等同样开启鼠标跟踪事件setMouseTracking(true),则子控件的鼠标移动事件会通过事件循环传递到父类的QMainWindow中,最终触发QMainWindow的mouseMoveEvent函数。//mainwindow的鼠标跟踪事件被子控件遮挡拦截,原创 2024-12-18 16:22:22 · 1041 阅读 · 0 评论 -
Qt样式表
Qt样式表(style sheet)是用于定制用户界面的强有力的机制,其概念、术语是受到HTML中的级联样式表(Cascading Style Sheets,CCS)启发而来,只是Qt样式表是用用于窗体界面,与HTML的CSS类似,Qt的样式表是纯文本的格式定义,在应用程序运行时可以载入和解析这些样式定义。使用样式表可以定义各种界面组件(QWidget类及其子类)的样式,从而使应用程序的界面呈现不同的效果。很多软件具有换肤功能,使用Qt的样式表就可以很容易的实现这样的功能。原创 2024-12-04 22:20:33 · 544 阅读 · 0 评论 -
QChart数据可视化
1.2.1 QChartView类视图对象,实际是一个独立的widget,用以展示图表。1.2.2 QChart类是真正的图表对象,QChart需要添加在QChartView对象下才可在正确展示出来。1.2.3QAbstractSeries类是数据集合,在QChart中添加QAbstractSeries,才可以展示出数据,否则QChart只能展现坐标轴 ,主要数据类及继承关系如下。1.2.4 QAbstractAxis类。原创 2024-11-27 22:37:35 · 2018 阅读 · 0 评论 -
Qt中2D绘制系统
Qt 的绘图系统允许使用相同的 API 在屏幕和打印设备上进行绘制。整个绘图系统基于 QPainter,QPainterDevice 和 QPaintEngine 三个类。 QPainter 用来执行绘制的操作;QPaintDevice 是一个二维空间的抽象,这个二维空间可以由QPainter 在上面进行绘制;QPaintEngine 提供了画笔 painter 在不同的设备上进行绘制的统一的接口。QPaintEngine 类用在 QPainter 和 QPaintDevice 之间,并且通常原创 2024-11-25 16:03:42 · 1260 阅读 · 0 评论 -
Qt中插件的使用
插件是一种(遵循一定规范的应用程序接口编写出来的)程序,定位于开发实现应用软件平台不具备的功能的程序。插件必须依赖于应用程序才能发挥自身功能,仅靠插件是无法正常运行的;相反地,应用程序并不需要依赖插件就可以运行,这样一来,插件就可以加载到应用程序上并且动态更新而不会对应用程序造成任何改变(热更新)。插件就像硬件插卡一样,可以被随时删除、插入和修改,所以结构很灵活,容易修改,方便软件的升级和维护。原创 2024-11-15 16:49:46 · 2207 阅读 · 0 评论 -
PostgreSql的备份和升级
该数据库版本主要分为主要版本和次要版本,大版本基本每年发布一次,小版本则每几个月即发布,更新较快。在10.0之前所使用的数据库版本由三个数字组成,如9.5.2,主要版本为9.5,次要版本为2,即9.5版本第二次发布;在10.0之后版本由两位数字组成,如10.16,10为主要版本,16为次要版本,同一个主版本由于数据的存储结构相同,且总是前后版本兼容,因此升级只需要将旧版本的data文件替换到新的data文件即可;而跨越主版本升级则会因为存储结构的改变而不能简单的进行data替换。原创 2024-10-12 22:54:29 · 2399 阅读 · 0 评论 -
Qt中的网络客户端
Qt中客户端接口,QNetworkAccessManager系列类的使用。原创 2024-10-07 11:15:21 · 1777 阅读 · 0 评论 -
Qt程序国际化之多语言翻译应用
本文介绍了Qt程序国际化的完整流程。首先通过Qt设计师生成界面并创建ts翻译文件,编辑后转换为qm文件加载使用。重点讲解了语言热切换的实现方案:通过安装翻译器触发LanguageChange事件,该事件会传播至所有窗口部件,调用retranslateUI函数实现界面文本更新。文章提供了LanguageManager管理类实现语言切换的核心代码,并强调在构造函数中调用retranslateUI的重要性,以避免切换语言时界面数据丢失的问题。最后给出了标准的changeEvent和retranslateUI实现范原创 2024-10-07 00:33:40 · 591 阅读 · 0 评论 -
Qt中线程的使用
Qt中线程,线程池等的使用;QTimer在线程中的应用等原创 2024-07-03 23:43:19 · 3052 阅读 · 0 评论
分享