QItemDelegate和QStyledItemDelegate有什么区别?

16

这两个类都为模型中的数据项提供显示和编辑功能。 QStyledItemDelegate 是较新的,关于 QItemDelegate 的 Qt 文档说明如下:

请注意,QStyledItemDelegate 已接管绘制 Qt 的项目视图的工作。当创建新代理时,我们建议使用 QStyledItemDelegate。

我不明白这两者之间的区别,并且不知道为什么更倾向于使用 QStyledItemDelegate 而不是 QItemDelegate


6
请再确认一下,您是否查看了http://doc.qt.io/qt-5/qstyleditemdelegate.html文档中的“QStyledItemDelegate vs. QItemDelegate”部分? - Iuliu
@luliu 我错过了那部分。谢谢。 - Nejat
8
从QItemDelegate文档中可以了解到,QStyledItemDelegate 使用当前样式来绘制其项目。因此,建议在实现自定义委托或使用 Qt 样式表时使用 QStyledItemDelegate 作为基类。因此,如果您正在使用样式表,它不会影响由 QItemDelegate 创建的小部件。这就是为什么 Qt 建议使用 QStyledItemDelegate 的原因。 - Alex
1个回答

8
QStyledItemDelegate文档所述,它们都是独立的替代品,用于在视图中绘制和提供项目编辑器。两者之间的区别在于QStyledItemDelegate使用当前样式来绘制其项。因此,在实现自定义委托或使用Qt样式表时,我们建议将QStyledItemDelegate作为基类。除非自定义委托需要使用样式进行绘制,否则所需的代码应该相等。请注意,本答案基于Iuliu和Alex的评论。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接