当前位置: 首页 > article >正文

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

文章目录

  • 一、模型角色
    • 1、角色的分类
    • 2、角色的使用
    • 3、示例

前言:

在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()等函数与视图进行交互。视图通过指定索引和角色来请求或设置模型中的数据。模型则根据请求返回相应的数据或执行相应的操作。如下:

// 获取模型数据
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、示例


http://www.kler.cn/a/307402.html

相关文章:

  • 论文阅读《BEVFormer v2》
  • ubuntu20.04安装FLIR灰点相机BFS-PGE-16S2C-CS的ROS驱动
  • Android Framework AMS(16)进程管理
  • Unity3D学习FPS游戏(12)敌人检测和攻击玩家
  • 以色列支付龙头遭DDoS攻击,各地超市加油站等POS机瘫痪
  • Blender进阶:图像纹理节点和映射节点
  • 第十一章 【后端】商品分类管理微服务(11.2)——Lombok
  • 『功能项目』切换职业技能面板【49】
  • 【系统架构设计】基于中间件的开发
  • “Fast-forward“ in git-pull result
  • AI助力遥感影像智能分析计算,基于高精度YOLOv5全系列参数【n/s/m/l/x】模型开发构建卫星遥感拍摄场景下地面建筑物智能化分割检测识别系统
  • go语言的基本语法
  • 【Kubernetes】常见面试题汇总(十九)
  • 消失的数字:
  • Android 应用安装-提交阶段
  • HC-SR04超声波传感器详解(STM32)
  • 【Mysql】记录sql在执行过程中很慢
  • 定点数例题——定点数范围推导
  • 2022高教社杯全国大学生数学建模竞赛C题 问题一(1) Python代码演示
  • 基于python+django+vue的鲜花商城系统
  • C++ 类域+类的对象大小
  • 链动321模式开发系统解析源码
  • 电子连接器温升仿真教程 一
  • Linux per memcg lru lock
  • Spring Boot-缓存问题
  • k8s 容忍和污点