qt qss样式模板_普通程序员怎么做Qt架构

25e39e49fd7fe69e3f85d6aed86d60f1.png
“分享我在编程中的设计观念,遇到的技术点,让我们在工作和生活中一起追求自由”

这几年,自由的概念让我印象深刻,前不久看到一个词叫辞职自由。

对,我刚刚辞职。站在新公司小山丘前,我想别人在实现财务自由的时候,我在追求加班自由,加班时努力搬砖,同时也有不加班的自由,架构让我们自由。

终将自由

大学毕业至今,一直在医疗器械行业写软件,羡慕过互联网的繁华,曾经也面试过游戏开发岗位,可最终还是在围城里,和同事们调侃,毕生都将献给伟大的民族医疗产业了。

此时还是有很多人像我这样,在传统行业里,默默写着C和C++,用最朴实的开发语言,实现最基础的功能。行业里我们不是光环加身的程序员,工作中有些烦恼耿耿于怀,也会有理想让我蠢蠢欲动,写行业最好的软件,做最纯粹的技术。

随便一个人可以做架构吗

我认为不能,但是普通的程序员都是有机会做架构的。

首先看看软件团队都有些什么角色,我们的软件团队比较小,由一个技术主管,2-3个技术骨干,3-5个普通工程师组成。文中的问题就是,这3-5个普通工程师,怎么将自己的写的代码,纳入公司的软件框架中。

回顾上一周的工作,高老师负责系统鼠标资源管理,开发过程中遇到了一个问题,QGraphicsViewQWidget遮挡后,QGraphicsItem无法通过grabMouse获得鼠标移动事件,我跟高老师一起调试了Qt源码。后来高老师还指导小王同学,调整了对话框下一个复杂的qss样式。

这些工作中,鼠标资源是系统框架的一部分,调整qss则是属于应用功能开发。

可以看出,高老师是技术骨干,他会负责系统框架相关的开发任务。小王同学则是普通工程师,他的任务大多是与UI界面相关的,极少有机会修改系统框架代码。

与系统相关的公共服务接口,高老师会提前将这部分写好。

企业中软件架构的分层

想要将自己的代码,纳入公司的软件框架中,首先要知道目标,需要写哪部分的功能代码。

企业软件架构中,考虑到平台化的需要,将公共的部分设计成平台层,每个产品间有差异的部分设计成产品层。平台层包含核心机制、业务框架、业务逻辑、UI图形框架,产品层更过多的是初始化配置,流程控制,UI界面相关的功能。

dce6b0fd619cc2e6d45f9a2422966d14.png
架构分层设计

平台层的核心机制、业务框架、UI图形框架就是软件框架的目标。

软件框架提供什么

软件框架的核心,是解决开发过程遇到的通用问题,如何接受输入,如何进行对象间通信,如何呈现输出,在此基础上再考虑解耦,性能,安全,和需求扩展的可能性。

以超声软件框架为例,我们的基础框架使用Qt,在Qt之外还补充了一些核心的机制,比如:异步日志系统,Dump机制,事件机制,对象关系映射框架,内存池。

业务框架是针对自身特殊业务提供服务,比如:图像引擎,参数系统,预置框架,系统通知等。

图形应用框架,包括界面相关公共代码,比如:多屏幕管理,主界面分层,UI控件动态加载,系统资源管理器,光标资源,触摸屏框架,及超声主程序的字体、风格、多语言管理机制。

哪个都不是好啃的骨头。

核心模块的需求

写框架功能之前首先要思考为啥呢要写,写了之后能解决什么问题。

以事件机制为例,我们在Qt事件机制基础上,增加了自定义事件的处理,目的是提供对象间通信,并解除通信对象间的直接依赖。

Qt提供了信号槽,实现对象间的通信。从对象依赖关系的角度看,信号和槽虽然是松散耦合的,发出信号的类不知道哪个对象槽接收信号;但是在connect建立信号槽关联时,必定有一个类依赖信号对象和槽对象,通常这个类就是槽。

另外,信号槽机制需要建立在已知对象指针的基础上,也引入了额外的依赖关系。

还有某些场景下,槽对象无法获取信号对象信息,它根本就不知道信号从哪里发出。

如果我们提供一个机制,可以很轻易实现,互不关联的2个对象通信,也就是接口的调用,是不是很香。

提供对象间通信机制,和解耦机制,是企业软件架构的基本需求。

核心模块怎么写

在面向对象设计中,我认为关键是做好2件事,分清职责和解除依赖,软件框架的实现也无非如此。

对于如何使用Qt自定义事件,实现对象间的通信,我画了一个简单的实现过程,感兴趣的同学,可以关注我后续“终将自由”系列的文章,我将和大家一起,逐步分析传统行业中企业软件架构的实现过程。

420df9f6af6c6f9792877ef65ca2387f.png
基于Qt事件机制的对象通信

祝你自由

如果小王同学不断追求进步,他会承担一个独立模块的开发任务,或者找到目前软件框架中不合理的地方,他就有机会进行优化重构。

比如,对于复杂的qss,如果其他的功能也需要用到,他可以封装一个包装类,放在UI框架中。

随着小王的代码,在框架出现的频率越来越高,小王就会变成技术骨干老王,祝他自由。

fbc633d99c47ecc26672268ae42859e8.png
如果觉得文章有用请关注我的微信公众号
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值