
QT专栏
文章平均质量分 72
Qt技术,从开源的技术入手,构建强大而稳定的桌面端软件。
knowthyselfcn
桌面端、网站架构,会点opengl,会点Android
展开
-
Qt Designer UI 中的设计模式
Qt UI文件的实现原理很简单。但是,如果做过C#或者Android的经验,会觉得Qt的实现方式还是更加复杂一些的。Java/C#中实现这种功能的时候,并不需要转换为代码。而是由代码直接读取ui文件的文本,由文本内的信息直接构建ui对象。为什么Java/C# 可以做到,C++不行,这是为什么呢?原因很简单,因为C++没有“反射”这个语言特性。如果没有反射,就不能简单的实现从字符串构造对象。那么就没有办法不修改代码、只修改ui文件而实现修改程序ui的目的。 在Qt中,每个UI文件就是一个工具类...原创 2021-02-10 17:43:58 · 1069 阅读 · 0 评论 -
Qt Core 模块
由于这个模块太基础了,我反而没有看到有文章详细的写过。感觉这不太应该啊。core模块由如下几方面组成: 元对象 属性系统 强大的signal/slot机制。 对象树 多线程 IO、Container、状态机 事件系统 元对象系统不得不提了,它是Qt 各种功能的基石。准确来说,若使用Qt元对象系统,那其实是在使用比C++ 更高...原创 2019-12-03 20:38:03 · 1274 阅读 · 0 评论 -
Qt GUI 模块
在core模块之上,就是最为重要的GUI模块了。Qt4中只有QtGui模块,UI相关的功能都封装在一起。Qt5中拆分为GUI、Widget两个模块。GUI模块提供桌面系统集成,事件处理,OpenGL/Vulkan,基础图像,字体等功能。通过链接1 可知,GUI模块的class 是相当少的。但是,它们却是Qt 界面技术的核心。我们甚至可以不使用Qt Widget 模块,也能做出来符合设计的UI功...原创 2019-11-23 23:31:50 · 2518 阅读 · 0 评论 -
Qt View 中用多线程
在View层,我们不可避免的需要一些多线程的控制,但是,却又没有达到抽象出一个线程给程序全局使用的程度,这个线程仅仅只需要负责本view内部的操作,这个线程的生命周期一般短于view的生命周期。所以,我们需要一个简单的方式。这里主要涉及到如下几种需求:时间短,即使多算一遍、几遍也无所谓;时间很久,没必要完成前一次;时间不一定,但是需要排队;对于第一种需求,我们可以使用Fu...原创 2019-11-20 19:56:53 · 554 阅读 · 0 评论 -
Qt 项目中的View、Controller
2019-11-05 我发现,一些Qt项目中,开发者因为Qt的框架提供了很好的解耦方式,便不再关注controller,把widget class 当作controller。这实在是不应该。在这样的代码基础上进行下去,就会发现所有的东西都逐渐放在了widget上。超大的cpp文件,ui、逻辑、数据库操作,混杂,不可直视。在这里,我们假设系统比较简单,MVC中Model包含了数据库访问(DAO...原创 2019-11-06 12:41:57 · 900 阅读 · 0 评论 -
Qt 与 MVC
2018-11-14 MVC软件架构模式出现的很早,80年代随着可视化操作系统的兴起就开始发展了。“MVC模式最早由Trygve Reenskaug在1978年提出[1],是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件架构。”在那个8086的年代直接从语言层面为UI显示考虑,我真的不得不佩服项目负责人开拓创新的精神。但此文并不讨...原创 2019-08-06 10:51:49 · 981 阅读 · 0 评论 -
Qt Vulkan支持及Qt界面技术简析
2017-12-18 本来计划在Qt5.9版本支持Vulkan的,但是跳水了一个版本,放到了Qt5.10。估计是因为5.9是长期支持版,怕vulkan带来了不稳定性。经过了一周时间的延后,正式版本还是发布了。似乎Qt Vulkan支持一直是 Laszlo Agocs 负责的(没有验证),最高的实验版本也是他给出的。 OpenGL很早就成为了Qt的渲染核心,我想在可见的将来,应该原创 2017-12-20 14:48:22 · 10762 阅读 · 1 评论 -
使用Qt
2015-05-23 我们的项目的界面一直采用MFC,多人协作时,MFC的资源管理冲突真是让人无语。我们最近在做重构,考虑把界面技术切换到Qt,由于团队里的两个C++ UI都只有MFC的经验,我不做UI,只是在学校中学习过Qt的课程,我是推荐使用Qt的,这事儿还是讨论了一番。 我们做了一番尝试,认为Qt的确是比MFC方便些。控件注册是采用C 宏实现的,这简直是个灾原创 2017-02-10 13:46:50 · 552 阅读 · 0 评论