PySide6.QtQml.QQmlPropertyMap¶
- class QQmlPropertyMap¶
QQmlPropertyMap类允许你设置可以在 QML 绑定中使用的键值对。更多…概要¶
方法¶
def
__init__()def
clear()def
contains()def
count()def
freeze()def
insert()def
isEmpty()def
keys()def
operator[]()def
size()def
value()
虚拟方法¶
def
updateValue()
信号¶
def
valueChanged()
注意
本文档可能包含从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()信号。但是,请注意,当通过调用insert()或clear()进行更改时,valueChanged()信号不会被触发 - 只有在从QML更新值时才会触发。注意
无法从映射中移除键;一旦添加了键,您只能修改或清除其关联的值。
注意
当从
QQmlPropertyMap派生一个类时,使用protected two-argument constructor,以确保该类正确注册到Qt元对象系统中。注意
QQmlPropertyMap的 QMetaObject 是动态生成和修改的。对该元对象的操作不是线程安全的,因此应用程序需要明确同步对元对象的访问。构建一个具有父对象
parent的可绑定映射。- clear(key)¶
- Parameters:
key – str
清除与
key关联的值(如果有的话)。- contains(key)¶
- Parameters:
key – str
- Return type:
布尔
如果映射包含
key,则返回true。另请参阅
- count()¶
- Return type:
整数
这是一个重载函数。
与
size()相同。- freeze()¶
禁止向此属性映射添加任何进一步的属性。可以修改或清除现有属性。
反过来,现有属性的内部缓存被打开,这可能会导致从QML访问速度更快。
- insert(values)¶
- Parameters:
values – 字典,键类型为 .QString,值类型为 QVariant。
将
values插入到QQmlPropertyMap中。不存在的键会自动创建。
此方法比连续多次调用
insert(key, value)要快得多。- insert(key, value)
- Parameters:
key – str
value – 对象
将与
key关联的值设置为value。如果键不存在,则会自动创建。
- isEmpty()¶
- Return type:
布尔
如果映射不包含任何键,则返回 true;否则返回 false。
另请参阅
- keys()¶
- Return type:
字符串列表
返回键的列表。
已被清除的键仍会出现在此列表中,尽管它们的关联值是无效的 QVariants。
- operator(key)¶
- Parameters:
key – str
- Return type:
对象
这是一个重载函数。
与
value()相同。- size()¶
- Return type:
整数
返回地图中的键的数量。
- updateValue(key, input)¶
- Parameters:
key – str
input – 对象
- Return type:
对象
返回要存储的键
key的新值。此函数用于拦截来自QML的属性更新,其中来自QML的值为input。重写此函数以在属性值更新时对其进行操作。请注意,此函数仅在从QML更新值时调用。
- value(key)¶
- Parameters:
key – str
- Return type:
对象
返回与
key关联的值。如果未为此键设置值(或如果值已被清除),则返回无效的 QVariant。
- valueChanged(key, value)¶
- Parameters:
key – str
value – 对象
每当映射中的某个值发生变化时,就会发出此信号。
key是对应于已更改的value的键。