class QQmlPropertyMap#

QQmlPropertyMap 类允许你设置键值对,这些键值对可以在 QML 绑定中使用。 更多

Inheritance diagram of PySide6.QtQml.QQmlPropertyMap

摘要#

方法#

虚方法#

信号#

注释

此文档可能包含从 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是动态生成和修改的。对该元对象的操作不是线程安全的,因此应用程序需要小心确保显式同步对元对象的访问。

__init__([parent=None])#
参数:

parentQObject

使用父对象parent构建一个可绑定映射。

clear(key)#
参数:

key – 字符串

清除与key相关的值(如果有的话)。

contains(key)#
参数:

key – 字符串

返回类型:

布尔型

如果映射包含key则返回true。

参见:

size()

count()#
返回类型:

整数

这是一个重载函数。

size()相同。

freeze()#

不允许再向此属性映射中添加任何属性。现有的属性可以被修改或清除。

结果,对于现有属性将开启内部缓存,这可能会导致从QML的访问更快。

insert(values)#
参数:

values – 类型为QString键和类型为QVariant值的字典。

values插入到QQmlPropertyMap中。

不存在键将自动创建。

此方法在连续多次调用insert(key, value)时速度要快得多。

insert(key, value)
参数:
  • key – 字符串

  • value – 对象

将与key关联的值设置为value

如果键不存在,它将自动创建。

isEmpty()#
返回类型:

布尔型

如果映射不包含任何键则返回true;否则返回false。

参见:

size()

keys()
返回类型:

字符串列表

返回键的列表。

已被清除的键仍然会出现在此列表中,即使它们的相关值是无效的 QVariants。

operator(key)
参数:

key – 字符串

返回类型:

对象

这是一个重载函数。

value()相同。

size()
返回类型:

整数

返回映射中键的数量。

参见:

isEmpty()count()

updateValue(key, input)
参数:
  • key – 字符串

  • input – 对象

返回类型:

对象

返回要为key存储的新值。此函数提供,以拦截从 QML 传入的属性更新,其中 QML 提供的值是input

覆盖此函数以在更新时操纵属性值。请注意,此函数仅在从 QML 更新值时调用。

value(key)
参数:

key – 字符串

返回类型:

对象

返回与key关联的值。

如果未为此键(或如果已清除值)设置值,则返回无效的QVariant。

valueChanged(key, value)
参数:
  • key – 字符串

  • value – 对象

每当映射中的一个值发生变化时,都会发出此信号。key是对应于已更改的value的键。

注释

当通过调用insert()clear()进行更改时,valueChanged()不会被发出 - 它仅在从 QML 更新值时发出。