Qt Model/View 概论(-)

Model-View-Controller(MVC), 是从Smalltalk发展而来的一种设计模式,常被用于构建用户界面。它强制性的使应用程序的输入、处理和输出分开。

在Qt中引入了一个MVC的变体---model/view结构。这个结构依然是把数据存储与数据表示进行了分离,它与MVC都基于同样的思想,但它更简单一些。这种分离使得在几个不同的view上显示同一个数据成为可能,也可以重新实现新的view,而不必改变底层的数据结构。为了更灵活的对用户输入进行处理,引入了delegate这个概念。它的好处是,数据项的渲染与编程可以进行定制。其具体工作机制如下图:

从上图可看出,Model直接读取数据,View可以直接显示数据,也可以显示经过Delegate处理后的数据。同时用户可以直接通过Delegate直接编辑数据通过model存入数据文件中。models,views,delegates之间通过信号,槽机制来进行通讯。

工作机制:

传统中View只用来负责数据显示,因此在view创建时并不需要model只有当其显示信息的时候才会用到model。model通过QAbstractItemMode提供统一的接口,view会调用model的index来获得一个indexmodel,然后再通过indexmodel来获得想要得到的data.

model负责从数据集里面选取合适的数据提供给View因此model可以充当数据的选择和过滤器,另一方面可以接收Delegate发回的信息更新数据集中的数据信息。

Deletegate是由View层通过各种signal或者event事件引发,实现数据的更改并通过Model写入数据集中。


posted @ 2010-11-25 13:19  博水  阅读(1820)  评论(3编辑  收藏  举报