在 QML 中,width
、height
与 implicitWidth
、implicitHeight
这几个属性常常令开发者感到困惑。本文将详细介绍它们之间的区别,并说明在何种情况下应使用隐式尺寸以及普通尺寸。
基本定义
width
和height
:表示组件/item 的实际尺寸。implicitWidth
和implicitHeight
:表示组件/item 的自然尺寸,即在未明确指定尺寸时,组件自己希望占用的尺寸。
理解隐式尺寸和实际尺寸
隐式尺寸(Implicit Size)通常在创建可重用组件时使用。它表示组件在未设置明确尺寸时的自然大小。例如,一个图片的自然尺寸是其文件的实际像素大小,但这个尺寸可以被拉伸或缩小。
举例说明
假设我们有一个图片图库,其中的图片大小不一,我们希望这些图片在显示时可以缩小但不放大,此时可以使用隐式宽度和高度来存储图片的自然尺寸:
Image {width: Math.max(150, implicitWidth)height: Math.max(150, implicitHeight)
}
对于自定义组件,可以选择将尺寸定义为相对于组件的根节点,例如:
Item {id: rootRectangle {