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

数据项角色的理解

 

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

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

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

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

本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓

数据项角色的分类

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 <QPixmap>
#include <QRgb>

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 ):Qt模型视图结构2_数据项角色 - YueLiGo - 博客园

本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值