目录
0. 前言
我们在专栏的第一篇文章中,提到Delegate时说:

但现在Model和View都已经入门了,该来的总是要来的:本文我们就一起开始进攻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把数据显示成字符串。
这里先老样子,仿照Model和View,来一张UML类图,看看它的家族渊源:

可以发现这位老兄比Model或是View要简洁多了,从QObject出来直接就是标准的Abstract接口了。
从前文我们已经知道
QAbstractItemModel和QAbstractItemView分别定义了Model类和View类的标准接口;
标准接口均无法实例化。
图中的两兄弟QStyledItemDelegate和QItemDelegate,官方更推荐使用QStyledItemDelegate,因为它使用了当前程序的风格去绘制对象。所以本文所有操作都将围绕QStyledItemDelegate进行。

2. 为什么要用Delegate
在学习它之前我们需要知道,为什么我们需要使用它?或者哪些情况使用它能带给我们何种便利?我们不能因为它是Model/View框架里面的重要一员而学习。
使用场景自然从其功能分析,Delegate负责渲染和编辑数据,那我们使用它必然是因为默认的渲染或编辑方式不及预期。
所以使用Delegate基本上是一个锦上添花的操作,如果只需要实现基本功能的话,似乎不使用Delegate也无伤大雅。换言之:决心使用Delegate的朋友都是高品位的 👻。
举2个简单例子阐述:
-
渲染</

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

被折叠的 条评论
为什么被折叠?



