我在C ++中有一个带有属性的组件" step":
class cppcomponent : public QObject
...
Q_PROPERTY(QVariant step READ getStep WRITE setStep NOTIFY stepChanged)
我尝试将此属性连接到QML。
TextInput {
text: cppcomp.step
}
它在一个方向上工作。 QML获得初始值。但是,当我更改QML中的值时,不会调用setStep
方法。
仅当我在onAccepted:
中显式设置C ++组件的属性时,它才有效TextInput {
text: cppcomp.step
onAccepted: {
cppcomp.step = step.text
}
}
我真的必须明确地设置它吗?
答案 0 :(得分:1)
您的代码应该可以正常运行,但可能未定义step
。如果您想访问TextInput
属性,只需省略其id
即可。要确认您的想法是否正常,请运行以下代码:
QtObject { //A bare QObject with one property
id:cppcomp
property string step: "Working"
}
TextInput {
text: cppcomp.step+"!"
onAccepted: cppcomp.step = text
}
每次在TextInput
聚焦时按输入,都会显示新的!
。
(用Qt 5.7测试)