8.0 导言
8.0 导言
MVC设计模式是源于SmallTalk的一种设计模式,通过将模型和视图以及操作模型的数据的方法(即:控制)进行分离,从而起到了很好的解耦合的作用。MVC的三大基本元素就是:模型(Model)、视图(View)、控制器(Controller)。
与MVC设计模式类似,Qt引入了模型/视图框架用于完成数据和用于展示数据的界面的分离,另外为了使得操作模型中的数据更加方便,Qt还引入了代理(Delegate)。通过使用代理,能够自定义数据的条目(item)的显示和编辑方式。
Qt的模型和视图架构分为三个部分,模型(Model)、视图(View)、和代理(Delegate)。其中,模型和数据源进行双向通信,并为其他的部件提供访问数据的接口;而视图则用来获取数据条目的模型的索引(Model Index)。而在代理中,代理则负责获取数据的条目,当需要修改数据条目时,代理和模型会直接进行通信。而链接模型-视图和代理之间的桥梁则正是Qt中大名鼎鼎的信号和槽机制。
(1)当模型中的数据发生改变时,模型会通过预先连接的信号和槽来通知视图。
(2)当用户点击或对视图进行操作时,视图本身也会发出信号。
(3)代理会发出信号来报告当前模型或视图编辑器当前的状态。
模型-视图-代理之间的关系如图所示:


浙公网安备 33010602011771号