QT中Model/View模型简介

1 篇文章 0 订阅
1 篇文章 0 订阅

Model/View编程介绍


QT4发展了一系列的视图类,这些视图类用Model/View模型来管理数据和显示方式之间的关系。这种架构带来的功能分离特性使得开发者能够更灵活的自定义数据的显示方式,而且它所提供的标准模式接口使我们在这个既有的视图中能够使用多种组织形式的数据。在这篇文章里,我们简要介绍一下Model/View模型,将涉及到的相关概念列出一个大纲,并且描述一下各种view的结构。在这个架构中的每一部分都会有相应的解释和列子来帮助理解如何使用这些类。


Model/View结构


Model-View-Controller(MVC)是一种来自于Smalltalk的设计模式,常被用于构建用户接口程序。在《设计模式》一书中,Gamma et al.写到:


“MVC包含三个部分。Model是应用对象,View是视图显示,而Controoler定义了用户接口对于用户输入如何反应。在MVC提出之前,用户接口设计倾向于将这三部分揉合到一起。MVC架构对其进行了解耦从而提升了灵活性和可复用性。”


如果将View和Controller结合起来,就是Model/View模型。这个架构仍然可以将数据显示和数据存储分离开来,但是却使得结构更加简单明了。这种分离使得在不同视图中显示同一组数据成为可能,并且在完成视图的同时能够不改变数据的存储结构。为了灵活的处理数据输入,我们介绍delegate的概念。在这个架构中引入delegate的好处就是它允许自定义的编辑数据。


Model取得数据,它提供了一个和其它组件的接口。通讯的方式取决于数据的来源和model实现的方式。

 

View通过model来获取modelindexes:model indexes可以指向数据源。通过向model提供model indexes,view可以获取数据源的数据。

 

在标准view中,代理类修改数据项。当某个数据项被编辑时,delegate用model indexes直接和model进行通信。


Model,view和delegata通过信号槽机制相互通信:

         如果数据发生更新,来自于model的信号通知view。

         如果用户编辑更新数据项,来自于view的信号通知delegate。

         如果处于数据项编辑中,来自于delegate 的信号通知model和view关于编辑器的状态。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QtModel/View是一种常用的模式,用于将数据和用户界面分离。它允许您将数据存储在一个模型,并使用视图来显示和编辑这些数据。 模型Model)是一个类,它提供了访问和操作数据的接口。它可以是QAbstractItemModel的子类,也可以是Qt提供的一些现有模型,如QStandardItemModel或QSqlTableModel。 视图(View)用于显示模型的数据,并允许用户与之交互。常见的视图类包括QTableViewQTreeView和QListView。这些视图类提供了不同的显示方式,以适应不同的数据结构和用户需求。 模型和视图之间通过代理(Proxy)进行通信。代理是一个间层,它可以对模型的数据进行排序、过滤或其他操作,然后将结果传递给视图进行显示。 为了使用Model/View模式,您需要完成以下步骤: 1. 创建您的数据模型,并实现必要的接口函数。 2. 创建一个视图对象,并将其设置为显示特定模型的数据。 3. 可选地创建一个代理对象,对模型的数据进行进一步处理。 4. 将视图和代理与模型连接起来,以便它们可以相互通信。 通过使用Model/View模式,您可以实现数据与界面的解耦,使得对数据的修改更加方便和灵活。您可以通过修改模型来改变数据的存储方式,而不需要修改视图的代码。同时,您还可以使用现有的视图类来显示不同类型的数据,而无需重新编写显示逻辑。 希望这个简要介绍对您有帮助!如果您有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值