PySide6.QtQml.QQmlPropertyMap

class QQmlPropertyMap

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

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()信号。但是,请注意,当通过调用insert()clear()进行更改时,valueChanged()信号不会被触发 - 只有在从QML更新值时才会触发。

注意

无法从映射中移除键;一旦添加了键,您只能修改或清除其关联的值。

注意

当从QQmlPropertyMap派生一个类时,使用protected two-argument constructor,以确保该类正确注册到Qt元对象系统中。

注意

QQmlPropertyMap 的 QMetaObject 是动态生成和修改的。对该元对象的操作不是线程安全的,因此应用程序需要明确同步对元对象的访问。

__init__([parent=None])
Parameters:

父对象QObject

构建一个具有父对象 parent 的可绑定映射。

clear(key)
Parameters:

key – str

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

contains(key)
Parameters:

key – str

Return type:

布尔

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

另请参阅

size()

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。

另请参阅

size()

keys()
Return type:

字符串列表

返回键的列表。

已被清除的键仍会出现在此列表中,尽管它们的关联值是无效的 QVariants。

operator(key)
Parameters:

key – str

Return type:

对象

这是一个重载函数。

value() 相同。

size()
Return type:

整数

返回地图中的键的数量。

另请参阅

isEmpty() count()

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

注意

当通过调用insert()clear()进行更改时,不会发出valueChanged()信号 - 只有在从QML更新值时才会发出。