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
的键。