77 lines
1.5 KiB
Markdown
77 lines
1.5 KiB
Markdown
|
# Code examples
|
||
|
|
||
|
## Parent assumptions
|
||
|
|
||
|
### Don't assume parent's context bad example
|
||
|
|
||
|
`PreanchoredItem.qml` component
|
||
|
|
||
|
```qml
|
||
|
Item {
|
||
|
// This limits the usage of the component and can lead to maintenance burden
|
||
|
anchors.fill: parent
|
||
|
|
||
|
//...
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Broken usage of `PreanchoredItem` component
|
||
|
|
||
|
```qml
|
||
|
Item {
|
||
|
id: root
|
||
|
|
||
|
// Using PreanchoredItem with a container (layouts, delegate in a ListView ..) will result in warning or broken UI layout.
|
||
|
ColumnLayout {
|
||
|
// This will generate a qml warning and Layout won't work as expected
|
||
|
PreanchoredItem {
|
||
|
Layout.fillWidth: true
|
||
|
Layout.fillHeight: true
|
||
|
}
|
||
|
|
||
|
// ....
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
|
||
|
### Give user choice
|
||
|
|
||
|
User should be allowed to choose how to size the control based on it's design and UX requirements. Only provide hints and recommendations.
|
||
|
|
||
|
`GoodItem.qml` component
|
||
|
|
||
|
```qml
|
||
|
Item {
|
||
|
// Rather provide implicit sizes if appropriate and leave user to layout or anchors as
|
||
|
// he see fit given its panel/view design
|
||
|
implicitWidth: 200
|
||
|
implicitHeight: 100
|
||
|
|
||
|
//...
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Usage of `GoodItem` component
|
||
|
|
||
|
```qml
|
||
|
// Using GoodItem with a container (layouts, positioners, delegate in a ListView ..) works well
|
||
|
ColumnLayout {
|
||
|
// This will generate a qml warning and Layout won't work as expected
|
||
|
GoodItem {
|
||
|
Layout.fillWidth: true
|
||
|
Layout.fillHeight: true
|
||
|
}
|
||
|
|
||
|
GoodItem {
|
||
|
Layout.preferredWidth: true
|
||
|
Layout.preferredHeight: true
|
||
|
}
|
||
|
|
||
|
GoodItem {
|
||
|
// Nothing will still show the "optimal" size provided by the control
|
||
|
}
|
||
|
|
||
|
// ....
|
||
|
}
|
||
|
```
|