标题:QML如何在外部修改Rect的图片
作者:qq2632671
日期:2023-08-10 17:57
内容:
RT
首先是一个Rect,我需要把这个作为一个组件在别的文件里使用
//ChangeImg.qml
Rectangle {
width : 100;
height : 100
Image{
id:imgx
source : "A1.png"
anchors.fill : parent
}
}然后是使用这个组件
//mian.qml
Column{
ChangeImg{
id:a1
width : 100
height : 100
}
ChangeImg{
id:a2
width : 100
height : 100
}
Component.onCompleted : {
//a2.Image.source = "A2.png"; #语句1
//ChangeImg.imgx.source = "A2.png"; #语句2
//a1.imgx.source = "know.png"; #语句3
}
}现在因为某些需求,需要在Column中修改Rect中的图片,
语句1 :无效
语句2 :QML提示"file:///D:/QML/TestImg/main.qml:16: TypeError: Value is undefined and could not be converted to an object"
语句3 : 结果同语句2
所以,如何在这个Column中修改Rect的图片?
#1 [20091001753 08-10 21:06]
//ChangeImg.qml
Rectangle {
width : 100;
height : 100
property alias imasou: imgx.source
Image{
id:imgx
source : "A.png"
anchors.fill : parent
}
}
//mian.qml
Component.onCompleted : {
a1.imasou = "B.png"
}
#2 回 20091001753 的帖子 [qq2632671 08-11 14:54]
20091001753:
//ChangeImg.qml
Rectangle {
width : 100;
height : 100
property alias imasou: imgx.source
.......
非常感谢,顺利在问个问题,我用了alias后确实可以在Rect外部通过a1.imasou修改图片,但我其实是通过JS函数来修改图片的,在Rect外部有个JS函数
function changeImg(){
a1.imasou = "A1.png";
}类似上面这种,但我运行是提示
file:///E:/QML/ChangeImg.js:23: TypeError: Cannot assign to read-only property "imasou"
这种情况怎么解决?