QQmlListProperty 类
template <typename T> class QQmlListPropertyQQmlListProperty 类允许应用程序将基于 QObject 的类的类似列表属性暴露给 QML。 更多...
头文件 | #include <QQmlListProperty> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Qml) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
qmake | QT += qml |
公共类型
公共函数
QQmlListProperty(QObject *object, QList<T *> *list) | |
QQmlListProperty(QObject *object, void *data, QQmlListProperty<T>::AppendFunction append, QQmlListProperty<T>::CountFunction count, QQmlListProperty<T>::AtFunction at, QQmlListProperty<T>::ClearFunction clear) | |
QQmlListProperty(QObject *object, void *data, QQmlListProperty<T>::AppendFunction append, QQmlListProperty<T>::CountFunction count, QQmlListProperty<T>::AtFunction at, QQmlListProperty<T>::ClearFunction clear, QQmlListProperty<T>::ReplaceFunction replace, QQmlListProperty<T>::RemoveLastFunction removeLast) | |
QQmlListProperty(QObject *object, void *data, QQmlListProperty<T>::CountFunction count, QQmlListProperty<T>::AtFunction at) | |
bool | operator==(const QQmlListProperty<T> &other) const |
宏
QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND | |
QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE | |
QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT |
详细描述
QML 有许多列表属性,可以分配多个对象值。从 QML 使用列表属性的样子是这样的
FruitBasket { fruit: [ Apple {}, Orange{}, Banana{} ] }
QQmlListProperty 封装了一组表示 QML 可以在列表上执行的动作(添加项、检索项和清除列表)的功能指针集合。将来可能会支持更多操作。所有列表属性都必须实现 append 操作,但其余的是可选的。
为了提供一个列表属性,C++ 类必须实现操作回调,然后从属性获取器返回适当的 QQmlListProperty 值。列表属性应该没有设置器。在上面的例子中,Q_PROPERTY() 声明将看起来像这样
Q_PROPERTY(QQmlListProperty<Fruit> fruit READ fruit)
QML 列表属性是类型安全的 - 在这种情况下 Fruit
是一个 QObject 类型,Apple
、Orange
和 Banana
都是从它继承的。
另请参阅 第五章:使用列表属性类型.
成员类型文档
[别名]
QQmlListProperty::AppendFunction
等同于 void (*)(QQmlListProperty
.
将 value 添加到列表 property 中。
[别名]
QQmlListProperty::AtFunction
等同于 T *(*)(QQmlListProperty
.
返回列表 property 中位置 index 的元素。
[别名]
QQmlListProperty::ClearFunction
等同于 void (*)(QQmlListProperty
.
清除列表 property。
[别名]
QQmlListProperty::CountFunction
等同于 qsizetype (*)(QQmlListProperty
.
返回列表 property 中元素的数量。
[别名]
QQmlListProperty::RemoveLastFunction
等同于 void (*)(QQmlListProperty
.
从列表 property 中移除最后一个元素。
[别名]
QQmlListProperty::ReplaceFunction
等同于 void (*)(QQmlListProperty
.
将列表 property 中位置 index 的元素用 value 替换。
成员函数文档
QQmlListProperty::QQmlListProperty(QObject *object, QList<T *> *list)
从现有的 QList list 创建 QQmlListProperty 值的便捷构造函数。在 object 存在期间,list 引用必须保持有效。必须提供 object。
QQmlListProperty::QQmlListProperty(QObject *object, void *data, QQmlListProperty::AppendFunction append, QQmlListProperty::CountFunction count, QQmlListProperty::AtFunction at, QQmlListProperty::ClearFunction clear)
通过操作函数 append、count、at 和 clear 构建一个 QQmlListProperty。可以传递一个不透明的 data 处理器,它可以在操作函数内部访问。只要 object 存在,列表属性就有效。
对于任何函数都可以传递空指针。如果传递了任何空指针,列表将既不可设计也不可由调试器更改。建议为所有函数提供有效的指针。
注意:如果提供了所有这些操作,则生成的 QQmlListProperty 将使用 count、at、clear 和 append 生成 removeLast() 和 replace() 方法。这很慢。如果您打算对列表进行操作而不仅仅是清除它,请显式提供这些方法。
QQmlListProperty::QQmlListProperty(QObject *object, void *data, QQmlListProperty<T>::AppendFunction append, QQmlListProperty<T>::CountFunction count, QQmlListProperty<T>::AtFunction at, QQmlListProperty<T>::ClearFunction clear, QQmlListProperty<T>::ReplaceFunction replace, QQmlListProperty<T>::RemoveLastFunction removeLast)
通过一系列操作函数 append、count、at、clear、replace 和 removeLast 构造一个 QQmlListProperty。可以传递一个不可见的 data 处理来在操作函数内部访问。当 object 存在时,列表属性保持有效。
对于任何函数可以通过传递空指针来调用,如果可能,将使用其他函数生成相应的函数。QQmlListProperty 可以使用
- clear 使用 count 和 removeLast
- replace 使用 count、at、clear 和 append
- replace 使用 count、at、removeLast 和 append
- removeLast 使用 count、at、clear 和 append
如果是给定的情况下。这样会很慢,但如果你的列表没有为这些原语提供更快的选项,您可能希望使用生成的函数。
此外,如果 count、at、append、和 clear 既没有明确给出也没有合成,列表将不能由调试器设计和更改。建议提供足够的有效指针以避免此情况。
QQmlListProperty::QQmlListProperty(QObject *object, void *data, QQmlListProperty<T>::CountFunction count, QQmlListProperty<T>::AtFunction at)
从一系列操作函数 count 和 at 构造一个只读 QQmlListProperty。可以传递一个不可见的 data 处理来在操作函数内部访问。当 object 存在时,列表属性保持有效。
bool QQmlListProperty::operator==(const QQmlListProperty<T> &other) const
如果此 QQmlListProperty 与 other 相等,则返回 true,否则返回 false。
宏文档
QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND
此宏定义了此类列表属性的行为为 Append。在派生类型中分配属性时,值会附加到基类的值上。这是默认行为。
class FruitBasket : QObject { Q_OBJECT QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND Q_PROPERTY(QQmlListProperty<Fruit> fruit READ fruit) public: // ... QQmlListProperty<Fruit> fruit(); // ... };
另请参阅QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT、QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE 和 通过 QML 文档定义对象类型。
QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE
此宏定义了此类列表属性的行为为 Replace。在派生类型中分配属性时,值会替换基类的值。
class FruitBasket : QObject { Q_OBJECT QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE Q_PROPERTY(QQmlListProperty<Fruit> fruit READ fruit) public: // ... QQmlListProperty<Fruit> fruit(); // ... };
也见 QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND、QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT 和 通过 QML 文档定义对象类型。
QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT
此宏定义了此类列表属性的替代IfNotDefault行为。在派生类中分配属性时,除非是默认属性,否则值将替换基类的值。在默认属性的情况下,值将被添加到基类的值中。
class FruitBasket : QObject { Q_OBJECT QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE_IF_NOT_DEFAULT Q_PROPERTY(QQmlListProperty<Fruit> fruit READ fruit) public: // ... QQmlListProperty<Fruit> fruit(); // ... };
也见 QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_APPEND、QML_LIST_PROPERTY_ASSIGN_BEHAVIOR_REPLACE 和 通过 QML 文档定义对象类型。
© 2024 Qt 公司。此处包含的文档贡献属于各自所有者的版权。此处提供的文档根据自由软件基金会发布的 GNU 自由文档许可协议版本 1.3 的条款进行许可。Qt 及其相应标志是芬兰以及/或在其他国家和地区 Qt 公司的商标。所有其他商标均为其各自所有者的财产。