我用QML编写了用户界面,需要将一些值从Slider传递给C ++类。 C ++类通过qmlRegisterType()向QML公开。我的滑块很简单,看起来像这样:
Slider {
id: sliderCurForceR
stepSize: 0.1
value: 0.0
onValueChanged: {
con.CurForceR = value
}
其中“con”是我暴露给QML的C ++类型的ID。 onValueChanged我喜欢将“con”中的属性CurForceR设置为滑块值。该属性定义如下:
Q_PROPERTY(float CurForceR READ getCurForceR WRITE setCurForceR NOTIFY CurForceRChanged)
void setCurForceR(const float &force);
float getCurForceR();
现在,当我运行程序时,出现“TypeError:Type error”消息,指向赋值“con.CurForceR = value”。但是,它按预期工作,我从我的滑块获取当前值到我的C ++属性,但我喜欢摆脱这个讨厌的错误消息/警告。我也尝试使用qreal类型作为属性,但结果相同。我也使用int属性并以相同的方式从滑块获取值,没有错误。我在这里做错了什么?
答案 0 :(得分:0)
好的,我明白了。简单的失败......我忘记了初始化此滑块时第一次发出onValueChanged信号。我的qml文件中的问题是,我在myclass类型之前创建了滑块。因此,第一次无法访问该属性,因为保留它的项目是在滑块后不久创建的。但我仍然不明白为什么当最小值为零时失败没有出现。无论如何,非常感谢Laszlo,让我更多地考虑这个:-)