使用QML,属性值可以基于另一个对象属性的值,称为
binding
每次更新您所依赖的属性时,它都会更新您的值。
如本例所示
implicitWidth
属于
CppItem
是父对象宽度的一半
Text
将填充布局。如果调整窗口大小,则
CPP项目
宽度已更新。
Window
{
RowLayout {
anchors.fill: parent
CppItem { implicitWidth: parent.width * 0.5 }
Text { Layout.fillWidth: true }
}
}
在我的问题中,CppItem是
QQuickItem
使用一些C++代码,在某些特定情况下,C++代码将设置
隐式宽度
使用以下代码。
我知道我可以
setImplicitWidth
但我不确定这是否会对我的问题产生影响,而且如果该属性不是在C++中声明的,而是在加载的QML文件中声明的,那么无论如何都无法做到这一点。
setProperty("implicitWidth", 100);
已设置属性值,但未删除QML绑定。因此,上面的C++代码并不等同于QML代码:
cppItem.implicitWidth = 100
对于C++代码,在
parent.width
将在上触发更新
cppItem.implicitWidth
然后再次设置值
CPP项目。隐式宽度
。
如何从C++中删除此绑定?