QML中的QModelIndex及相关类

自Qt 5.5以来,QModelIndexQPersistentModelIndex作为基于值的类型在QML中公开。以类似方式公开的还有QModelIndexListQItemSelectionRangeQItemSelection。这些类型的所有对象都可以作为var属性或纯JavaScript变量在QML和C++之间来回传递。

以下是对QML公开此类API的概述。有关更多信息,请参阅它们的C++文档。

注意: 由于所有这些类型都公开为小部件,因此不会发出属性更改通知信号。因此,绑定它们的属性可能不会得到预期的结果。特别是对于QPersistentModelIndex

QModelIndex和QPersistentModelIndex类型

所有这些属性都是只读的,与它们的C++对应物相同。此外,我们还公开了以下函数

  • QVariant data(int role) (since Qt 6.7)

注意: 在QML中对QModelIndex的通常注意事项。如果底层模型更改或被删除,访问其属性可能变得危险。因此,不应存储任何QModelIndex对象。但是,您可以安全地以这种方式存储QPersistentModelIndex对象。

QModelIndexList类型

QModelIndexList在QML中公开为JavaScript数组。转换会自动在C++之间进行。实际上,任何JavaScript数组都可以转换为QModelIndexList,其中的非QModelIndex对象将被替换为无效的QModelIndex

注意: 访问数组元素时发生QModelIndexQPersistentModelIndex的转换,因为以这种方式公开的任何QModelIndex属性都保留引用语义。

QItemSelectionRange类型

所有这些属性都是只读的,与它们的C++对应物相同。此外,我们还公开了以下函数

QItemSelection 类型

类似于 QModelIndexListQItemSelection 在 QML 中以 JavaScript 数组的形式暴露 QItemSelectionRange 对象。 conversions 自动从 C++ 实现转换。事实上,任何 JavaScript 数组都可以转换回 QItemSelection,其中非 QItemSelectionRange 对象将被替换为空 QItemSelectionRange

另请参阅ItemSelectionModel.

© 2024 The Qt Company Ltd. 本文档中的文档贡献是各自所有者的版权。所提供的文档是在免费软件基金会发布的情况下受到 GNU免费文档许可版1.3 的许可。Qt 及其商标是芬兰的 The Qt Company Ltd. 以及世界各地的商标。所有其他商标均为其各自所有者的财产。