我在属性" step"中具有C 的组件:
class cppcomponent : public QObject
...
Q_PROPERTY(QVariant step READ getStep WRITE setStep NOTIFY stepChanged)
我尝试将此属性连接到QML。
TextInput {
text: cppcomp.step
}
它在一个方向上起作用。QML获取初始值。但是,当我更改QML的值时,我的setStep
方法未调用。
仅在我设置C 组件的属性时,它才能明确设置在Accepted中:
TextInput {
text: cppcomp.step
onAccepted: {
cppcomp.step = step.text
}
}
我真的必须明确设置它吗?
您的代码应该很好地工作,除非可能无法定义step
。如果要到达TextInput
属性,只需省略其id
即可。要确认您的想法正常工作,请运行此代码:
QtObject { //A bare QObject with one property
id:cppcomp
property string step: "Working"
}
TextInput {
text: cppcomp.step+"!"
onAccepted: cppcomp.step = text
}
每次按 Enter TextInput
焦点时,应出现新的!
。
(用QT 5.7测试)