【问题标题】:What is the difference between QItemDelegate and QStyledItemDelegate?QItemDelegate 和 QStyledItemDelegate 有什么区别?
【发布时间】:2015-03-05 06:06:53
【问题描述】:

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

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

我很困惑两者之间有什么区别以及为什么QStyledItemDelegateQItemDelegate 更受欢迎!

【问题讨论】:

  • 仔细检查一下,您是否检查了doc.qt.io/qt-5/qstyleditemdelegate.html 文档的QStyledItemDelegate vs. QItemDelegate 部分?
  • @luliu 我错过了那部分。谢谢。
  • 来自 QItemDelegate 文档:""" 它们之间的区别在于 QStyledItemDelegate 使用当前样式来绘制其项目。因此,我们建议在实现自定义委托或使用 Qt 时使用 QStyledItemDelegate 作为基类样式表。""" 因此,如果您使用样式表,它不会对 QItemDelegate 制作的小部件产生影响。这就是 Qt 推荐使用 QStyledItemDelegate 的原因。

标签: c++ qt qitemdelegate qstyleditemdelegate


【解决方案1】:

正如QStyledItemDelegate documentation 中提到的,不同之处在于QStyledItemDelegate 使用当前样式来绘制其项目。

这两个类是绘画的独立替代品, 为视图中的项目提供编辑器。它们之间的区别是 QStyledItemDelegate 使用当前样式 来绘制其项目。我们 因此建议使用QStyledItemDelegate 作为基类 实现自定义委托或使用 Qt 样式表时。 任何一个类所需的代码都应该相同,除非自定义 委托需要使用该样式进行绘制。

请注意,此答案基于 Iuliu 和 Alex 的 cmets

【讨论】:

    猜你喜欢
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    • 2012-02-06
    • 2011-02-25
    • 2011-11-22
    • 2015-03-26
    • 2013-08-19
    相关资源
    最近更新 更多