- class QQmlPropertyMap#
QQmlPropertyMap类允许你设置键值对,这些键值对可以在 QML 绑定中使用。 更多…摘要#
方法#
def
__init__()def
clear()def
contains()def
count()def
freeze()定义
insert()定义
isEmpty()定义
keys()定义
operator[]()定义
size()定义
value()
虚方法#
信号#
注释
此文档可能包含从 C++ 自动翻译到 Python 的片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译存在问题,也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建票据来告诉我们
详细说明#
QQmlPropertyMap提供了一种方便的方式将领域数据暴露给 UI 层。以下示例显示了您如何在 C++ 中声明数据,然后在 QML 中访问它。在 C++ 文件中
// create our data QQmlPropertyMap ownerData; ownerData.insert("name", QVariant(QString("John Smith"))); ownerData.insert("phone", QVariant(QString("555-5555"))); // expose it to the UI layer QQuickView view; QQmlContext *ctxt = view.rootContext(); ctxt->setContextProperty("owner", &ownerData); view.setSource(QUrl::fromLocalFile("main.qml")); view.show();
然后,在
main.qmlText { text: owner.name + " " + owner.phone }
绑定是动态的 - 每当键的值被更新时,绑定到该键的任何内容也会更新。
要检测 UI 层中做出的值更改,可以连接到
valueChanged()信号。但是请注意,valueChanged()不会 在调用insert()或clear()时发出 - 它仅在 QML 中更新值时发出。注释
无法从映射中删除键;键一旦添加,就只能修改或清除其关联的值。
注释
从
QQmlPropertyMap派生类时,应使用 `protected` 的两个参数构造函数,这确保了类已正确注册到 Qt 元对象系统。注释
《QQmlPropertyMap》的QMetaObject是动态生成和修改的。对该元对象的操作不是线程安全的,因此应用程序需要小心确保显式同步对元对象的访问。
使用父对象
parent构建一个可绑定映射。- clear(key)#
- 参数:
key – 字符串
清除与
key相关的值(如果有的话)。- contains(key)#
- 参数:
key – 字符串
- 返回类型:
布尔型
如果映射包含
key则返回true。参见:
- count()#
- 返回类型:
整数
这是一个重载函数。
与
size()相同。- freeze()#
不允许再向此属性映射中添加任何属性。现有的属性可以被修改或清除。
结果,对于现有属性将开启内部缓存,这可能会导致从QML的访问更快。
- insert(values)#
- 参数:
values – 类型为QString键和类型为QVariant值的字典。
将
values插入到QQmlPropertyMap中。不存在键将自动创建。
此方法在连续多次调用
insert(key, value)时速度要快得多。- insert(key, value)
- 参数:
key – 字符串
value – 对象
将与
key关联的值设置为value。如果键不存在,它将自动创建。
- isEmpty()#
- 返回类型:
布尔型
如果映射不包含任何键则返回true;否则返回false。
参见:
返回键的列表。
已被清除的键仍然会出现在此列表中,即使它们的相关值是无效的 QVariants。
这是一个重载函数。
与
value()相同。返回映射中键的数量。
返回要为
key存储的新值。此函数提供,以拦截从 QML 传入的属性更新,其中 QML 提供的值是input。覆盖此函数以在更新时操纵属性值。请注意,此函数仅在从 QML 更新值时调用。
返回与
key关联的值。如果未为此键(或如果已清除值)设置值,则返回无效的QVariant。
每当映射中的一个值发生变化时,都会发出此信号。
key是对应于已更改的value的键。