Neo*_*aru 5 c++ data-binding checkbox qt qt-quick
我正在学习QtQuick,我正在玩C++类和QML属性之间的数据绑定.
在我的C++对象模型中,我有两个属性:
Q_PROPERTY(QString name READ getName WRITE setName NOTIFY nameChanged)
Q_PROPERTY(bool status READ getStatus WRITE setStatus NOTIFY statusChanged)
Run Code Online (Sandbox Code Playgroud)
在我的.qml文件中:
TextEdit {
placeholderText: "Enter your name"
text: user.name
}
Checkbox {
checked: user.status
}
Run Code Online (Sandbox Code Playgroud)
当我setName从我的C++代码更改用户名时,它会自动反映在视图中.当我选中/取消选中该复选框,或者当我setStatus()从我的C++代码调用时,没有任何反应.似乎checked复选框的属性与TextEdit组件的行为不同.
我不想以声明方式绑定我的属性.Qt Quick不支持属性绑定吗?
谢谢您的帮助.
小智 10
正如leemes指出的那样,用户单击复选框会破坏您创建的绑定.因此,不要创建绑定,而是直接连接到更改信号以处理"get"情况.使用"onClicked"来处理"set"情况.此解决方案还需要您在Component.onCompleted()中初始化.例如...
CheckBox {
id: myCheck
onClicked: user.status = checked
Component.onCompleted: checked = user.status
Connections {
target: user
onStatusChanged: myCheck.checked = user.status
}
}
Run Code Online (Sandbox Code Playgroud)