这是Model/View中的最后一篇了,Qt官方显然弱化了Controller在MVC中的作用,提供了一个简化版的Delegate;甚至在Model/View框架的使用中,提供了默认的委托,让这个控制器愈加淡出开发者的实现。
实际上,Qt Model/View框架中的MVC概念是有误的,显而易见的就是Controller的作用,控制器应该只对交互进行控制,渲染方面的工作应该仅由View完成,但Delegate的接口中却包含了这一块。不过这都不是这篇文章的重点,我们只关注Delegate本身。
1. 实现一个自定义Delegate
这里我们也来实现一个自定义Delegate,怀着了解Delegate的目的,主要实现以下几个功能:
- 以不同颜色绘制View。
- 双击View方格区域弹出行编辑器,默认覆盖这个区域,显示字母。
- 输入行编辑器内的内容会被保存,下次点开显示。
- 鼠标停留,显示提示框。
2. 继承QAbstractItemDelegate
Qt提供了几个标准的委托:
- QItemDelegate:Qt**曾经**默认使用的委托。
- QStyledItemDelegate。:**现在**默认使用的委托,官方推荐我们使用这个。(自从Qt 4.4)
为了熟悉委托借口,我们继承虚基类QAbstractItemDelegate来实现我们的自定义委托。
本文福利,莬费领取Qt开发学习资料包、技术视