All visual elements derive from Item and have properties for controlling their size.
Width and Height
The properties width
and height
control the width and height requested by
the element.
Attention: The values represent CSS pixels as defined by the HTML standard. The actual size of a CSS pixel depends on the display scale and may be affected by the user.
Box {
width: 300
height: 100
color: "green"
}
If width
or height
is set to -1
(which is the default value), the element
adjusts its size automatically. For example, html.Label elements span
to fit their text this way and html.Box elements span to fit their children.
Box {
color: "green"
Label {
text: "This is a text."
}
}
Filling Space
The boolean properties fillWidth
and fillHeight
make elements fill the
entire space available, overruling width
and height
. The available space
is the parent's size minus the space used up by child elements without
fillWidth
or fillHeight
.
Box {
width: 300
height: 100
color: "green"
Box {
fillWidth: true
height: 50
color: "red"
}
}
If more than one child element uses fillWidth
or fillHeight
, the space
is distributed equally.
Size Constraints
The properties minWidth
and minHeight
dictate the minimum size of an element.
It is under no circumstances allowed to shrink any smaller.
Box {
width: 300 // this value is overruled by minWidth
height: 100
minWidth: 500
}
The properties maxWidth
and maxHeight
, on the other hand, dictate the
maximum size of an element.
It is under no circumstances allowed to grow any larger.
Box {
width: 300 // this value is overruled by maxWidth
height: 100
maxWidth: 100
}
Fixed Aspect Ratio
The property aspectRatio
maintains a fixed side aspect ratio while sizing
an element. The width
and height
properties constrain the area in which
the element is scaled.
Box {
width: 300
height: 300
Box {
width: parent.width
height: parent.height
aspectRatio: 16 / 9
color: "red"
}
}
The aspect ratio is the width divided by the height.
The Bounding Box
Since the width
and height
properties are size constraints rather than absolute
size values, they cannot be used for determining an element's true size in general.
Every element has read-only bbox
properties containing the element's bounding box for
accessing the actual size and position on screen.
The bbox
properties are:
bboxX
: The actual X position in document coordinates.bboxY
: The actual Y position in document coordinates.bboxWidth
: The actual width.bboxHeight
: The actual height.
Box {
width: 300
height: 300
Box {
width: parent.bboxWidth
height: parent.bboxHeight / 2
color: "red"
}
Box {
width: parent.bboxWidth / 2
height: parent.bboxHeight / 2
color: "green"
}
}
The bounding box of invisible elements is of width and height 0
.