今天在学习QML与c++信号槽交互时,想修改父控件的子控件的text属性时,发生了报错
qrc:/main.qml:49: TypeError: Value is undefined and could not be converted to an object
翻译过来就是:值未定义,无法转换为对象
当时就很懵逼,因为访问父控件的属性没问题,但是访问子控件属性就不行,在查阅了资料后了解到
对于一个组件(一个.qml文件),根对象的属性可以被外部访问,但是子对象的属性对外是不可见的,即
[父对象id].[子对象id].[子对象属性]
从图可见在第一个是可以访问的到,但是第二个就无法访问的到了。
修改起来也很方便,需要对子控件进行一个别名设置
Rectangle {
id : child
property alias item_name: textItem.text
x:100
y:100
height:x
width:x
Label {
id: textItem
text: "1234"
}
}
当设置了这样的别名然后再去修改属性就可以了
修改后就没有这个报错了