Qt 实战(10)模型视图 | 10.4、模型角色

文章目录

前言:

在Qt的模型/视图架构中,模型中的每个数据元素都不仅仅包含数据本身,还包含多种角色(Role)。角色可以理解为数据项中保存的属性或样式的类别,可以将其视为键-值对中的键,用于存储和检索数据的不同方面。Qt通过提供丰富的角色来支持数据的多样化表示和编辑。

一、模型角色

1、角色的分类

当视图View向模型Model索要数据时,不仅要提供索引 index,还必须要提供角色role。index和role共同决定出视图到底在向Model请求哪个数据。Qt当前提供了22个角色,下面介绍下这些角色的用法,如下:

内容设置:

类型 功能
DisplayRole 主要用于以文本的形式显示数据 QString
EditRole 可用于文本数据的编辑 (QString)
DecorationRole 可以将数据通过图标的方式呈现出来 (QColor、QIcon、QPixmap)
ToolTipRole 实现当鼠标处于选中的数据时,显示出数据的相关提示(QString)
StatusTipRole 在状态栏显示提示的数据(QString)
WhatsThisRole 可以通过选中数据摁下快捷键shift+F1来显示提示(QString)
SizeHintRole 可以提示相应大小(QSize)

样式设置:

类型 功能
FontRole 可以改变数据的字体
TextAlignmentRole 可以将文本的位置进行居中、居左居右调整
BackgroundColorRole 可以改变背景色
TextColorRole 设置文字颜色
ForegroundRole 可以改变前景色
CheckStateRole 在某列中设置了CheckStateRole角色后,设置的列则可以显示出一个CheckBox
InitialSortOrderRole 标题视图初始排序顺序

其他:

类型 功能
AccessibleTextRole 用于辅助功能和插件扩展的文本(如屏幕阅读器)
AccessibleDescriptionRole 用于无障碍项目的描述
UserRole 用于应用程序的特定目的(自己定义用途).用户自己决定使用什么数据,如何处理数据

2、角色的使用

在Qt的模型/视图架构中,角色通过模型的setData()data()等函数与视图进行交互。视图通过指定索引和角色来请求或设置模型中的数据。模型则根据请求返回相应的数据或执行相应的操作。如下:

cpp 复制代码
// 获取模型数据
virtual QVariant QAbstractItemModel::data(const QModelIndex &index, int role = Qt::DisplayRole) const = 0

// 修改模型数据
virtual bool QAbstractItemModel::setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)

3、示例

相关推荐
麦麦大数据1 小时前
MacOS 安装Python 3.13【同时保留旧版本】
开发语言·python·macos·python安装
上去我就QWER3 小时前
Qt中如何获取系统版本信息
开发语言·qt
我是苏苏4 小时前
C#高级:程序查询写法性能优化提升策略(附带Gzip算法示例)
开发语言·算法·c#
木木子99994 小时前
业务架构、应用架构、数据架构、技术架构
java·开发语言·架构
大佬,救命!!!9 小时前
C++多线程同步与互斥
开发语言·c++·学习笔记·多线程·互斥锁·同步与互斥·死锁和避免策略
赵文宇(温玉)9 小时前
构建内网离线的“github.com“,完美解决内网Go开发依赖
开发语言·golang·github
qq7422349849 小时前
Python操作数据库之pyodbc
开发语言·数据库·python
Joker100859 小时前
仓颉自定义序列化:从原理到高性能多协议实现
开发语言
Adellle9 小时前
2.单例模式
java·开发语言·单例模式
散峰而望9 小时前
C++入门(一)(算法竞赛)
c语言·开发语言·c++·编辑器·github