本页内容

QItemEditorFactory Class

QItemEditorFactory 类提供了用于在视图和委托中编辑项目数据的控件。更多内容...

头文件: #include <QItemEditorFactory>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets

公共函数

QItemEditorFactory()
virtual ~QItemEditorFactory()
virtual QWidget *createEditor(int userType, QWidget *parent) const
void registerEditor(int userType, QItemEditorCreatorBase *creator)
virtual QByteArray valuePropertyName(int userType) const

静态公共成员

const QItemEditorFactory *defaultFactory()
void setDefaultFactory(QItemEditorFactory *factory)

详细说明

在项目视图中编辑数据时,编辑器由一个委托对象创建并显示。QStyledItemDelegate (这是 Qt 项目视图上默认安装的委托对象)使用 QItemEditorFactory 为其创建编辑器。 所有项目委托都使用由 QItemEditorFactory 提供的默认唯一实例。如果您使用setDefaultFactory() 设置了一个新的默认工厂,则现有和新的委托都将使用该新工厂。

工厂维护着一组QItemEditorCreatorBase 实例,这些是专门用于生成特定QVariant 数据类型编辑器的专用编辑器(所有Qt模型都将数据存储在QVariant中)。

标准编辑控件

标准工厂实现为多种数据类型提供了编辑器。每当委托需要为模型提供的数据提供编辑器时,这些编辑器就会被创建。下表展示了各类型与所提供的标准编辑器之间的对应关系。

可以通过registerEditor()函数注册其他编辑器。

另请参阅 QStyledItemDelegate 和模型/视图编程。

成员函数文档

QItemEditorFactory::QItemEditorFactory()

创建一个新的项目编辑器工厂。

[virtual noexcept] QItemEditorFactory::~QItemEditorFactory()

销毁项目编辑器工厂。

[virtual] QWidget *QItemEditorFactory::createEditor(int userType, QWidget *parent) const

根据给定的parent ,为指定的userType 数据创建一个编辑器控件,并将其作为QWidget 返回。

另请参阅 registerEditor()。

[static] const QItemEditorFactory *QItemEditorFactory::defaultFactory()

返回默认的项目编辑器工厂。

另请参阅 setDefaultFactory()。

void QItemEditorFactory::registerEditor(int userType, QItemEditorCreatorBase *creator)

为给定的数据userType 注册由creator 指定的项编辑器创建器。

注意:该工厂会获取项目编辑器创建器的所有权,如果后续为同一类型注册了新的创建器,它将销毁该创建器。

另请参阅 createEditor()。

[static] void QItemEditorFactory::setDefaultFactory(QItemEditorFactory *factory)

将默认项编辑器工厂设置为给定的factory 。新旧委托都将使用新的工厂。

另请参阅 defaultFactory()。

[virtual] QByteArray QItemEditorFactory::valuePropertyName(int userType) const

返回用于访问给定数据userType 中数据的属性名称。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.