Qt Model/View 学习(6) - Delegate教程之——渲染

本文深入讲解了如何在Qt中使用Delegate,包括自定义QStyledItemDelegate的派生、paint()函数的重写、QPainter与QStyleOptionViewItem的应用,以及如何利用QStyle和控件绘制复杂数据展示。了解Delegate在提高视图表现力和编辑功能中的关键作用。


0. 前言

我们在专栏的第一篇文章中,提到Delegate时说:

在这里插入图片描述

但现在ModelView都已经入门了,该来的总是要来的:本文我们就一起开始进攻Delegate吧!


系列文章回顾
Qt Model/View 学习(1) - 是什么和为什么?
Qt Model/View 学习(2) - QModelIndex索引模型数据
Qt Model/View 学习(3) - 索引来一堆东西,究竟取谁(ItemDataRole)?
Qt Model/View 学习(4) - 实现自己的QAbstractTableModel类(支持显示与修改)
Qt Model/View 学习(5) - QTableView(优雅)使用教程(附源码)
Qt Model/View 学习(5.5) - 使用QTableView(优雅地)实现翻页效果(附源码)


1. Delegate简介

第一篇文章我们已经知道了,Delegate提供View上对数据进行渲染和修改的功能,以及提供了一个默认Delegate把数据显示成字符串

这里先老样子,仿照ModelView,来一张UML类图,看看它的家族渊源:
在这里插入图片描述

可以发现这位老兄比Model或是View简洁多了,从QObject出来直接就是标准的Abstract接口了。

从前文我们已经知道 QAbstractItemModelQAbstractItemView分别定义了Model类和View类的标准接口;

标准接口均无法实例化

图中的两兄弟QStyledItemDelegateQItemDelegate官方更推荐使用QStyledItemDelegate,因为它使用了当前程序的风格去绘制对象。所以本文所有操作都将围绕QStyledItemDelegate进行。
在这里插入图片描述


2. 为什么要用Delegate

在学习它之前我们需要知道,为什么我们需要使用它?或者哪些情况使用它能带给我们何种便利?我们不能因为它是Model/View框架里面的重要一员而学习。

使用场景自然从其功能分析,Delegate负责渲染和编辑数据,那我们使用它必然是因为默认的渲染或编辑方式不及预期

所以使用Delegate基本上是一个锦上添花的操作,如果只需要实现基本功能的话,似乎不使用Delegate也无伤大雅。换言之:决心使用Delegate的朋友都是高品位的 👻。

举2个简单例子阐述:

  1. 渲染</

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值