2018-11-14
MVC 软件架构模式出现的很早,80年代随着可视化操作系统的兴起就开始发展了。“MVC模式最早由Trygve Reenskaug在1978年提出[1],是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件架构。”在那个8086的年代直接从语言层面为UI显示考虑,我真的不得不佩服项目负责人开拓创新的精神。但此文并不讨论那些宏观的问题,也不像谈MVP、MVVM等架构,只是想从Qt如何实现MVC来讨论一下UI编程的问题。我不怎么喜欢UI编程,从学校时代就是如此。很简单,因为做这事儿太麻烦了,而且吃力不讨好,做的再漂亮、精细、易用,又有多大的好处呢?能用不就行了。CAD软件涉及到二维、三维操作,其架构的复杂度,是WEB软件架构所不能比的,甚至游戏架构复杂度都比不上它。最核心的功能在于显示、交互、算法的结合。
Qt 对于MVC架构模式做出了些改动,称之为 Model/View 编程。弱化了Controller 概念,把Controller和View 放在一起了。同时,还新增了一个概念:delegate。Models, views, 和 delegates之间的通信,依靠增强的C++ 语言(Signal/ slot 机制,moc编译器)实现的。Qt提供了这三类物体的 abstract class,我们extend 这些class 就能实现常规UI的功能。90年代提出的”观察者模式“对于 MVC架构的实现提供了标准描述。而Qt的元编译器则从语言层面实现了观察者模式。
QStandardItemModel[link]
一个UI控件对应的数据的抽象模型。这是Model/View中的Model。
它的职责就是给UI控件提供显示相关的数据。但是,对于显示数据的更改,如何通

最低0.47元/天 解锁文章
1630

被折叠的 条评论
为什么被折叠?



