属性赋值会导致属性绑定失效
Rectangle{
id:rec
...
width : 2*height
...
}
Timer{
...
onTrigger{
rec.width = 100
}
...
}
上述代码中,当定时器触发时会给rec的width赋值,此时width = 2* heght 的属性绑定关系将永久失效,如果想保留绑定关系,则要使用 binding 函数重新绑定 :
Rectangle{
id:rec
...
width : 2*height
...
}
Timer{
...
onTrigger{
rec.width = 100
rec.width = Qt.binding(function() { return 2*rec.height }) //再次建立属性绑定
}
...
}
缺少 Width 或 Height 的 Rectangle将不会显示
当一些Rectangle的 width 和 height 互相依赖的时候,可能回导致 width 和 height 都得不到确切的数值,这会导致 Rectangle 不显示。
而 implicitWidth 和 implicitHeight 正是用来解决这个问题的。
Text 和 Label 在显示文字时的尺寸问题
Text 和 Label 的尺寸和其内容有很大关系,当内容为空时,width又没设置时,则Text 和 Label将不显示,如果内容长度比组件width 长,且又没设置elide属性,那么内容将无视组件边界直接溢出,如果设置了elide属性,则会省略显示超长部分。
一般情况下, 先规划组件的尺寸,然后再设置elide属性,这样便显示的文本不会有问题。
图片显示裁剪
想要PreserveAspectCrop效果时, clip = true 要一起设置,clip默认是false 的 ,如果仅设置了PreserveAspectCrop,则图片还是会溢出边界。
alias 属性仅在 root 层有效
Rectangle{
id:root
...
property alias rootheight:rec.height //外部可以访问rootheight
Rectangle{
id:rec
...
property alias recheight:rec.height //外部无法访问recheight
...
}
...
}