模型视图结构

模型视图结构

ID:38782800

大小:629.00 KB

页数:39页

时间:2019-06-19

模型视图结构_第1页
模型视图结构_第2页
模型视图结构_第3页
模型视图结构_第4页
模型视图结构_第5页
资源描述:

《模型视图结构》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Qt之模型/视图 (2014-01-0815:48:01)转载▼标签: qt qt使用mvc qtableview qlistview qtreeview分类: Qt    关于Qt中MVC的介绍与使用,助手中有一节模型/视图编程(Model/ViewProgramming)讲解的很清晰。    Qt包含一组使用模型/视图结构的类,可以用来管理数据并呈现给用户。这种体系结构引入的分离使开发人员更灵活地定制项目,并且提供了一个标准模型的接口,以允许广泛范围的数据源被使用到到现有的视图中。    模型-视图-控制器(MVC)是一种设计模式,由三类对象组成:·模型:

2、应用程序对象。·视图:屏幕演示。·控制器:定义了用户界面响应用户输入的方式。    在引入MVC之前,用户界面的设计往往是将这些对象组合在一起。MVC的解耦带来了灵活性和重用性。    如果视图和控制器对象相结合,其结果是模型/视图结构,仍然分离了数据与呈现给用户的方式,但提供了基于相同原理的简单框架。这种分离使得它可以在几个不同的视图中显示相同的数据,并且实现新类型的视图,而无需改变底层的数据结构。为了灵活地处理用户输入,则引入了委托的概念。在此框架引入委托的优点是:它允许项目数据显示和自定义编辑。模型/视图结构    模型与数据源进行通信,在这个体系结构中

3、为其它组件提供了一个接口。通信的性质依赖于数据源的类型以及模型的实现方式。    视图从模型中得到模型索引,这些都引用到数据项。通过为模型提供模型索引,视图可以从数据源中检索数据项。    在标准的视图里,委托呈现数据项目。当一个项目被编辑,委托与模型直接利用模型索引进行通信。模型/视图/委托通信    模型、视图、委托使用信号和槽相互通信:·模型的信号:通知视图关于改变由数据源保持的数据。·视图的信号:提供了关于用户交互显示的项目信息。·委托的信号:当编辑时告诉模型和视图编辑器的状态。模型    所有的模型都基于QAbstractItemModel类。这个类

4、定义了一个使用视图和委托来访问数据的接口。数据本身不是必须要存储在模型中,可以在一个数据结构或一个单独的类、文件、数据库、或其它一些应用组件。    QAbstractItemModel为数据提供了一个接口,它足够的灵活性来处理表格、列表、树形式的数据视图。然而,实现新的列表和类似于表的数据结构模型时,QAbstractListModel和QAbstractTableModel类是更好的起点,因为它们提供了适当的常用的功能的默认实现。这些类可以派生子类,用来提供支持特定种类的列表和表格的模型。    Qt提供了一些现成的模型,可以用来处理数据项:·QStrin

5、gListModel:用于存储简单的QString的列表项。·QStandardItemModel:管理更复杂的树结构件,其中每一个项目可以包含任意数据。·QFileSystemModel:提供有关本地文件系统的文件和目录信息。·QSqlQueryModel、QSqlTableModel、QSqlRelationalTableModel:使用模型/视图约定来访问数据库。    如果这些标准模型不能满足要求,则可以继承化QAbstractItemModel、QAbstractListModel或QAbstractTableModel来创建自定义模型。视图    

6、提供了完整的实现为各种不同的视图:而QListView显示项目列表,QTableView中从一个表模型中显示数据,QTreeView则显示了层次列表的数据模型项目。每个类是基于QAbstractItemView抽象基类。虽然这些类是准备使用的实现,他们也可以被子类化,以提供自定义的视图。委托    QAbstractItemDelegate在模型/视图框架中代表抽象的基类。默认的委托实现由QStyledItemDelegate提供,这被Qt的标准视图用作默认的委托。然而,QStyledItemDelegate和QItemDelegate独立替代绘画,且为视图项

7、提供编辑器。它们之间的区别在于QStyledItemDelegate使用当前样式来绘制项目。因此,建议实现自定义委托或当与Qt样式表一起使用时,使用QStyledItemDelegate作为基类。排序    在模型/视图结构中有两种接近的排序方式,选择哪种方式取决于你的基础模型。    如果你的模型是可排序的,也就是说,如果重新实现了QAbstractItemModel::sort()方法,QTableView和QTreeView都提供了一个API,允许以编程方式排序来排序模型数据。此外,可以启用交互式排序(即允许用户将数据通过单击视图的标题进行排序),由QH

8、eaderView::sortIndi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。