- 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.qml
Text { 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
的键。