百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

Qt模型视图结构_数据项角色

csdh11 2025-03-05 15:01 39 浏览

数据项角色的理解

数据项角色通俗来说就是数据项中保存的属性(如文本和图标)或者样式(字体和对齐方式)的类别,可以将其当做键-值对中的键,从而为对应的值赋值。

QStandardItemModel中的每一个数据项为QStandardItem。举个例子,人有很多属性,如性别:男;身高:180cm;体重:80kg;民族:藏族等,构建Person对象时可能使用struct来存储。

QStandardItem中也有很多属性可供设置,如设置显示文本(DisplayRole)、提示(ToolTipRole)、w文本前的图标(DecorationRole)等。

除了上述可以保存的属性外,还有部分属性用于设置QStandardItem显示的样式,如字体(FontRole)、文本对齐方式(TextAlignmentRole)等。

Qt资料领取→「链接」

数据项角色的分类

Qt帮助文档中将数据项角色分为三类:

  • 内容设置

类型

功能

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

用于应用程序的特定目的(自己定义用途).用户自己决定使用什么数据,如何处理数据

数据项角色的测试

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include 
#include 

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    theModel = new QStandardItemModel(1, 2, this);
    ui->tableView->setModel(theModel);

    QPixmap pix;
    pix.load("C:\\Users\\wsw\\Desktop\\2.png");
    pix.scaledToWidth(20);
    pix.scaledToHeight(20);

    QModelIndex index = theModel->index(0, 0);
    theModel->setData(index, "124", Qt::DisplayRole);//设置文本
    theModel->setData(index, pix, Qt::DecorationRole);//设置标签图片
    theModel->setData(index, "tips", Qt::ToolTipRole);//设置提示
    theModel->setData(index, Qt::AlignRight, Qt::TextAlignmentRole);//设置文本对齐方式

    QStandardItem* item = theModel->itemFromIndex(index);//设置数据项中包含勾选框
    item->setCheckable(true);
    item->setData(Qt::Checked, Qt::CheckStateRole);
//    item->setWhatsThis("what'sThis");
//    item->setData("what?", Qt::WhatsThisRole); //在Dialog中能起作用,Dialog标题栏中有?,点击?后鼠标变为问号鼠标,再点击当前项会出现黄色框

    //设置字体
    QFont font;
    font.setBold(true);
    font.setPixelSize(24);
    font.setFamily("Microsoft YaHei");
    font.setItalic(true);
    theModel->setData(index, font, Qt::FontRole);

}

MainWindow::~MainWindow()
{
    delete ui;
}


文章转自博客园(YueLiGo):https://www.cnblogs.com/wsw2022/p/17078613.html

Qt资料领取→「链接」

相关推荐

IDEA界面太丑??尝试一下这几个插件

前言IntelliJIDEA主要用于支持Java、Scala、Groovy等语言的开发工具,同时具备支持目前主流的技术和框架,擅长于企业应用、移动应用和Web应用的开发。IntelliJi...

小巧 Vue 页面滚动进度条组件ScrollProgress

今天给大家分享一个轻量级Vue.js全屏滚动进度条组件VueScrollProgress。vue-scroll-progress一款基于vue.js构建的页面滚动进度条组件,...

基于vue实现可视化拖拽编辑器,页面生成工具,提升前端开发效率

项目介绍基于vue实现的可视化拖拽编辑器,实现页面生成工具,提升前端开发效率。可以基层到移动端项目作为自定义json直接生成UI页面。项目特点功能特点...

优秀 vue+heyui 后端管理系统HeyUI-Admin

今天再给小伙伴们推荐一款成熟的企业中后台管理系统HEYUI-Admin。heyui-admin基于vue.js和heyui组件库构建的后台管理系统。包含基础表单/表格功能,拓展组件(图表、富文本编辑...

响应式 Vue.js 前端组件化框架Xvue-UI

今天给小伙伴们推荐一款超不错的Vue轻量级组件框架XVueUI。xvue-ui基于vue2.x构建的响应式前端组件化框架。轻量级、易于上手,提供...

《基于SpringBoot+Vue的在线视频系统设计与实现》开题报告

【计算机毕业设计案例】基于SpringBoot+Vue的在线视频系统设计与实现_哔哩哔哩_bilibili...

超好用 Vue.js 图片裁切组件Vue-ImgCutter

今天给小伙伴们分享一个超棒的Vue图片任意裁剪插件VueImgCutter。vue-img-cutter基于vue2.x构建的轻量级剪切图片组件。支持移动图像、放大缩小图片、任意移动图片、固定比...

Vue 3 进阶用法:异步组件(vue 异步组件原理)

一、代码分割一个大型前端应用,如果所有代码都放在单一文件,体积会特别大,下载时间长,白屏时间久,用户体验差。...

源码补丁神器—patch-package(源码助手怎么用)

作者:张浩一、背景vue项目中使用vue-pdf第三方插件预览pdf,书写业务代码完美运行,pdf文件内容正常预览无问题。后期需求有变,业务需求增加电子签章功能。这个时候pdf文件的内容可以显示出...

经验分享:Vue2 项目升级 Vue3 + Element Plus,借助Deepseek手动升级

Vue3出来好久了,我开发的项目还在使用Vue2框架,一般情况下不考虑升级,但是最近需要接入工作流程引擎之类的,看了下Vue2生态下操作空间不是很好,那索性尝试升级Vue3吧。一番操作下来,升级成功,...

34K Star!史上最全JavaScript资源库 awesome-javascript

34KStar!史上最全JavaScript资源宝库大揭秘引言在GitHub上,有一个备受瞩目的JavaScript资源仓库,以其全面的内容和精心的分类,成为了众多开发者的必备参考。这个拥有超过...

基于 Vue.js 磁片栅格布局组件VueGridLayout

#头条创作挑战赛#今天给大家分享一个超优秀的vue.js拖拽栅格布局插件VueGridLayout。...

6款高颜值 Vue3 PC端UI组件库(vue3开发组件库)

马上到国庆了,还没学习或者想学习vue3的小伙伴们有安排上没?这次推荐几个比较流行的VUE3UI组件库,合理利用,又或者学习借鉴都是不错的选择。1、element-pluselement-plus...

高性能 vue.js+ztree 树形组件Vue-GiantTree

今天给大家分享一款超棒的Vue海量数据渲染树形组件VueGiantTree。vue-giant-tree基于ztree封装的Vue树形组件。轻松实现大数据高性能渲染,适合海量数据渲染场景。zTr...

【推荐】2024年推荐的6款开源免费 Vue 后台管理系统模板,建议收藏

前言在现今的软件开发领域,...