【发布时间】:2023-01-30 10:07:11
【问题描述】:
假设我有一个自定义的CheckBox:
//MyCheckBox.qml
CheckBox {
required property QtObject proxy
checked: proxy.value
Binding {
target: proxy
property: "value"
value: checked
}
}
所以 MyCheckBox 的检查状态绑定到我对象的 value 属性 (proxy)反之亦然,即我有双向绑定。
我正在使用我的自定义复选框,如下所示:
//My window
Item {
...
MyCheckBox {
id: ordinaryCheck
proxy: ...
}
...
}
一切都按预期工作。但是,如果我需要反转 MyCheckBox 的某些实例的逻辑怎么办:当proxy.value 为真时,复选框未选中,当proxy.value 为假时,复选框被选中?但是,ofc 不起作用,因为如果我尝试这样做,这里有一个绑定循环:
Item {
...
MyCheckBox {
id: invertedCheck
proxy: ...
checked: !proxy.value
Binding {
target: proxy.value
property: "value"
value: !checked
}
}
Qt 绑定也不是一个选项:
//MyCheckBox.qml
CheckBox {
required property QtObject proxy
checked: proxy.value
Component.onCompleted {
property.value = Qt.binding(function() { return checked });
}
}
我有同样的绑定循环错误在这种情况下。
那么我要达到目标的选择是什么,如何在实例化时交替绑定?
【问题讨论】:
-
Binding {是 qml 的一种功能吗? -
@YunusTemurlenk,这是一种类型:doc.qt.io/qt-6/qml-qtqml-binding.html
标签: c++ qt user-interface qml