QT —— "model/view" 使用帮助

本文详细介绍了QT中的Model/View架构,包括MVC组件、Models、Views和Delegates。重点阐述了模型与数据源的通信、视图如何显示数据、委托如何处理用户输入。还列举了多种现成的模型如QStringListModel、QStandardItemModel等,并给出了相关代码示例,展示了如何使用和自定义模型、视图及委托。
摘要由CSDN通过智能技术生成

(一)Model/View 结构

Model-View-Controller(MVC), 是从Smalltalk发展而来的一种设计模式,常用于创建用户界面。 

MVC包含3个组件:

  • Model:         应用对象,用来表示数据
  • View:           模型的用户界面,用来显示数据
  • Controller:  定义了用户界面对用户输入的反应方式

Delegate(委托):为了对用户输入进行灵活处理被引入,用于定制数据的渲染和编辑方式

其中,模型与数据源进行通信,为架构中的其他组件提供了接口。视图从模型中获得模型索引(Model Index),模型索引用来表示数据项。在标准的视图中,委托渲染数据项,当编辑项目时,委托使用模型索引直接与模型进行通信。

(二)Models

1.所有模型的基类:

QAbstractItemModel

 

2.可子类化以下模型创建自定义模型:

QAbstractItemModel

QAbstractListModel

QAbstractTableModel

 

3.其他现成的模型:

QStringListModel:        用来存储一个简单的QString项目列表

QStandardItemModel: 管理复杂的树形结构数据项,每一个数据项可以包含任意的数据

QFileSystemModel:     提供了本地文件系统中文件和目录信息

QSqlQueryModel、QSqlTableModel、QSqlRelationalTableModel: 用来访问数据库

 

4.基本概念

常见的模型:列表模型、表格模型、树模型

模型索引:每一块可以通过模型获取的数据都使用一个模型索引来表示,视图和委托都使用这些索引来请求数据项并显示。模型索引包含一个指针,指向创建它们的模型。由QModelIndex类提供,它是对一块数据的临时引用,可以用来检索或修改模型中的数据。

行和列:要获得一个数据项的模型索引,必须指定模型的3个属性:行号、列号、父项的模型索引

    QModelIndex index = model->index(row, column, parent);

父项:当数据项是以根项为父项时,父项的模型索引可以用QModelIndex()表示

项角色:模型中的数据项可以作为各种角色在其他组件中会用,允许为不同的情况提供不同类型的数据

常用角色类型:

常量

描述

Qt::DisplayRole

数据被渲染为文本(数据为QString类型)

Qt::DecorationRole

数据被渲染为图标等装饰(数据为QColor/ QIcon/ QPixmap类型)

Qt::EditRole

数据可以在编辑器中进行编辑(数据为QString类型)

Qt::ToolTipRole

数据显示在数据项的工具提示中(数据为QString类型)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值