QItemDelegate

QItemDelegate类为模型中的数据项提供显示和编辑功能。

QItemDelegate可用于为基于QAbstractItemView子类的项目视图提供自定义显示功能和编辑器小部件。 为此,使用委托可以独立于模型和视图自定义和开发显示和编辑机制。

QItemDelegate类是Model / View类之一,并且是Qt模型/视图框架的一部分。 请注意,QStyledItemDelegate接管了绘制Qt的项目视图的工作。 我们建议在创建新委托时使用QStyledItemDelegate。

在标准视图中显示来自自定义模型的项目时,仅确保模型为确定视图中项目外观的每个角色返回适当的数据通常就足够了。 Qt标准视图使用的默认委托使用此角色信息以用户期望的大多数常见形式显示项目。 但是,有时有必要对项目的外观进行更多控制,而不是默认委托可以提供的控制。

此类提供用于在视图中绘制项目数据并编辑项目模型中的数据的功能的默认实现。 提供了QAbstractItemDelegate中定义的paint()和sizeHint()虚拟函数的默认实现,以确保委托实现视图期望的正确基本行为。 您可以在子类中重新实现这些功能,以自定义项目的外观。

在项目视图中编辑数据时,QItemDelegate提供了一个编辑器小部件,该小部件是在进行编辑时置于视图顶部的小部件。 编辑器是使用QItemEditorFactory创建的; 由QItemEditorFactory提供的默认静态实例安装在所有项目委托上。 您可以使用setItemEditorFactory()设置自定义工厂,或者使用QItemEditorFactory :: setDefaultFactory()设置新的默认工厂。 使用Qt :: EditRole编辑的是存储在项目模型中的数据。

这里仅重新实现基于小部件的委托的标准编辑功能:

createEditor()返回用于更改模型数据的窗口小部件,可以重新实现以自定义编辑行为。

setEditorData()为小部件提供要处理的数据。

updateEditorGeometry()确保相对于项目视图正确显示编辑器。
setModelData()将更新的数据返回到模型。

closeEditor()信号指示用户已完成对数据的编辑,并且可以销毁编辑器小部件

发布了6 篇原创文章 · 获赞 2 · 访问量 3605
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览