- class QStyledItemDelegate#
该
QStyledItemDelegate
类提供了模型数据项的显示和编辑功能。更多…概要#
方法#
def
__init__()
虚拟方法#
def
displayText()
注意
此文档可能包含从C++自动翻译到Python的代码段。我们始终欢迎对代码段翻译的贡献。如果您发现翻译有问题,你也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建票据来告诉我们。
详细说明#
在Qt项视图中显示模型数据时,例如,
QTableView
,由代理绘制单独的项目。此外,当编辑项目时,它提供了一个编辑小部件,在编辑期间放在项视图的顶部。QStyledItemDelegate
是所有Qt项视图的默认代理,并在创建时进行安装。QStyledItemDelegate
类是模型/视图类之一,并是Qt的模型/视图框架的一部分。该代理允许独立于模型和视图开发项目显示和编辑。模型中项目的数据被赋予一个ItemDataRole;每个项目可以为每个角色存储一个QVariant。
QStyledItemDelegate
为用户期待的最常用数据类型执行显示和编辑,包括布尔型、整数和字符串。根据它们在模型中的角色,数据将被绘制得不同。下面的表格描述了代理可以处理每个角色的角色和数据类型。通常,如果是模型为每个角色返回适当的数据,就可以确定视图中的项目外观。
角色
接受类型
Qt::BackgroundRole
QBrush
Qt::CheckStateRole
Qt::CheckState
Qt::DecorationRole
QIcon, QPixmap, QImage 和 QColor
Qt::DisplayRole
QString 和具有字符串表示的类型的类型
Qt::EditRole
有关详细信息,请参阅
QItemEditorFactory
Qt::FontRole
QFont
Qt::SizeHintRole
QSize
Qt::TextAlignmentRole
Qt::Alignment
Qt::ForegroundRole
QBrush
编辑器是使用
QItemEditorFactory
创建的;由QItemEditorFactory
提供的默认静态实例被安装在了所有项目代理上。您可以使用setItemEditorFactory()
设置自定义工厂,或者使用setDefaultFactory()
设置新的默认工厂。编辑的是项目模型中带有编辑角色的数据。参见QItemEditorFactory
类,以获得对项目编辑器工厂的高级介绍。)QItemEditorFactory
实例说明如何使用工厂创建自定义编辑器。继承自 QStyledItemDelegate链接到本标题
如果代理不支持您需要的绘图数据类型,或者您想要自定义项的绘图,您需要继承
QStyledItemDelegate
,并重新实现paint()
和可能的sizeHint()
。对于每个项,paint()
函数将单独调用,通过sizeHint()
,您可以为每个项指定提示。在重新实现
paint()
时,通常会处理想要绘制的数据类型,并使用超类实现其他类型。复选框指示器的绘制是由当前样式完成的。样式还指定了绘制不同数据角色的宽度和边界矩形。由样式计算项目本身的边界矩形。因此,在绘制已支持的数据类型时,最好是请求样式这些边界矩形。在
QStyle
类描述中更详细地描述了这一点。如果您想更改样式计算出的任何边界矩形或复选框指示器的绘制,可以继承
QStyle
。请注意,但是,通过重新实现sizeHint()
,也会影响到项目的尺寸。自定义代理可以不使用编辑项工厂提供编辑器。在这种情况下,必须重新实现以下虚拟函数
createEditor()
返回用于更改模型数据的窗口小部件,并且可以重新实现以自定义编辑行为。setEditorData()
为小部件提供了可操作的数据。updateEditorGeometry()
确保编辑器相对于项视图正确显示。setModelData()
将更新后的数据返回给模型。
通过重新实现这些方法,星号代理 示例创建编辑器。
QStyledItemDelegate 与 QItemDelegate#
从 Qt 4.4 版本开始,有两种代理类:
QItemDelegate
和QStyledItemDelegate
。然而,默认代理是QStyledItemDelegate
。这两个类是绘画和为视图中的项提供编辑器时的独立替代方案。它们之间的区别在于QStyledItemDelegate
使用当前样式绘制其项。因此,我们建议在实现自定义代理或在 Qt 风格表单中工作时使用QStyledItemDelegate
作为基类。对于这两个类,所需的代码应相等,除非自定义代理需要使用样式进行绘画。如果您想自定义项视图的绘画,则应实现自定义样式。请参阅
QStyle
类的文档以获取详细信息。另请参阅
代理类
QItemDelegate
QAbstractItemDelegate
QStyle
星号代理示例 颜色编辑器工厂示例使用给定的
parent
构造项代理。此函数返回代表指定
locale
下模型 Qt::DisplayRole 的字符串。value
是模型提供的 Qt::DisplayRole 的值。默认实现使用 QLocale::toString 将
value
转换为 QString。对于空的模型索引,即模型返回无效 QVariant 的索引,该函数不会被调用。
另请参阅
- initStyleOption(option, index)#
- 参数:
option –
QStyleOptionViewItem
index –
QModelIndex
使用给定索引
index
初始化option
。该方法对于子类很有用,当它们需要QStyleOptionViewItem
但不想自己填充所有信息时。另请参阅
- itemEditorFactory()#
- 返回类型:
返回项委托使用的编辑器工厂。如果没有设置编辑器工厂,则函数将返回 null。
- setItemEditorFactory(factory)#
- 参数:
factory –
QItemEditorFactory
将项委托使用的编辑器工厂设置为指定的
factory
。如果没有设置编辑器工厂,则项委托将使用默认的编辑器工厂。另请参阅