Qt Model_View_学习笔记(格式修改版).pdf

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Qt Model_View_学习笔记(格式修改版)

Qt Model/View 学习笔记 一.介绍 Qt 4 推出了一组新的 Item View 类,它们使用 Model/view 结构来管理数据与表示层 的关系。这种结构带来的功能上的分离给了开发人员更大的弹性来定制数据项的表示, 也提供一个标准的 Model 接口,使得更多的数据源可以被这些 item view 使用。这里对 Model/view 的结构进行了描述,结构中的每个组件都进行了解释,给出了一些例子说明了 提供的这些类如何使用。 1.1 Model/View 结构 Model-View-Controller(MVC), 是从 Smalltalk 发展而来的一种设计模式,常被用 于构建用户界面。经典设计模式的著作中有这样的描述: MVC 由三种对象组成。Model 是应用程序对象,View 是它的屏幕表示,Controller 定 义了用户界面如何对用户输入进行响应。在 MVC 之前,用户界面设计倾向于三者揉合在一 起,MVC 对它们进行了解耦,提高了灵活性与重用性。 假如把 view 与 controller 结合在一起,结果就是 Model/view 结构。这个结构依然 是把数据存储与数据表示进行了分离,它与 MVC 都基于同样的思想,但它更简单一些。这 种分离使得在几个不同的 view 上显示同一个数据成为可能,也可以重新实现新的 view, 而不必改变底层的数据结构。为了更灵活的对用户输入进行处理,引入了 delegate 这个 概念。它的好处是,数据项的渲染与编程可以进行定制。 如上图所示,Model 与数据源通讯,并提供接口给结构中的别的组件使用。通讯的性 质依赖于数据源的种类与 Model 实现的方式。view 从 Model 获取 Model Indexes,后者是 数据项的引用。通过把 Model Indexes 提供给 Model,view 可以从数据源中获取数据。 在标准的 views 中,delegate 会对数据项进行渲染,当某个数据项被选中时,delegate 通过 Model Indexes 与 Model 直接进行交流。总的来说,Model/view 相关类可以被分成 上面所提到的三组:Models,views,delegates。这些组件通过抽象类来定义,它们有着共 同的接口,在某些情况下,还提供了缺省的实现。抽象类意味着需要子类化以提供完整的 其他组件希望的功能。这也允许实现定制的组件。Models,views,delegates 之间通过信号, 槽机制来进行通讯: 从 Model 发出的信号通知 view 数据源中的数据发生了改变。 从 view 发出的信号提供了有关被显示的数据项与用户交互的信息。 从 delegate 发生的信号被用于在编辑时通知 Model 和 view 关于当前编辑器的状态信 息。 1.1.1 Item Models 所有的 item Models 都基于 QAbstractItemModel 类,这个类定义了用于 views 和 delegates 访问数据的接口。数据本身不必存储在 Model,数据可被置于一个数据结构 或另外的类,文件,数据库,或别的程序组件中。 关于 Model 的基本概念在Model Classes 部分中描述。 Qt 已经实现过的 ItemModel 如下: 1.QAbstractItemModel 提供给数据一个接口,它非常灵活,基本满足 views 的需要, 无论数据用以下任何样的形式表现,如 tables,lists,trees。然而,当你重新实现一个 Model 时 , 如 果 它基 于 table 或 list 形 式 的 数 据 结 构 , 最 好 从 QAbstractListModel,QAbstractTableModel 开始做起,因为它们提供了适当的常规功能的 缺省实现。这些类可以被子类化以支持特殊的定制需求。子类化Model 的过程在Create New Model 部分讨论。QT 提供了一些现成的 Models 用于处理数据项: 2.QStringListModel 用于存储简单的 QString 列表。 3.QStandardItemModel 管理复杂的树型结构数据项

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档