使用 QML,属性值可以基于另一个对象属性的值,它称为绑定,每次更新您所依赖的属性时,它都会更新您的值。
就像在这个例子中一样,implicitWidth
ofCppItem
是父级宽度的一半,并且Text
将填充布局。如果调整窗口大小,CppItem
宽度会更新。
Window
{
RowLayout {
anchors.fill: parent
CppItem { implicitWidth: parent.width * 0.5 }
Text { Layout.fillWidth: true }
}
}
在我的问题中,CppItemQQuickItem
带有一些 C++ 代码,在某些特定情况下,C++ 代码将implicitWidth
使用以下代码设置。
我知道我可以使用setImplicitWidth
,但我不确定它是否会对我的问题产生影响,而且无论如何,如果属性不是在 C++ 中声明而是在加载的 QML 文件中声明,你就不能这样做。
setProperty("implicitWidth", 100);
设置了属性值,但未删除 QML 绑定。所以上面的 C++ 代码不等同于 QML 代码:
cppItem.implicitWidth = 100
使用 C++ 代码,任何更改parent.width
都将触发更新cppItem.implicitWidth
并再次设置 value cppItem.implicitWidth
。
如何从 C++ 中删除此绑定?