// First Qt imports
import QtQuick 2.15
import QtQuick.Controls 2.15
// Then custom imports
import my.library 1.0
Item {
id: root
// ----- Property Declarations
// Required properties should be at the top.
required property int radius: 0
property int radius: 0
property color borderColor: "blue"
// ----- Signal declarations
signal clicked()
signal doubleClicked()
// ----- In this section, we group the size and position information together.
x: 0
y: 0
z: 0
width: 100
height: 100
anchors.top: parent.top // If a single assignment, dot notation can be used.
// If the item is an image, sourceSize is also set here.
// sourceSize: Qt.size(12, 12)
// ----- Then comes the other properties. There's no predefined order to these.
// Do not use empty lines to separate the assignments. Empty lines are reserved
// for separating type declarations.
enabled: true
layer.enabled: true
// ----- Then attached properties and attached signal handlers.
Layout.fillWidth: true
Drag.active: false
Drag.onActiveChanged: {
}
// ----- States and transitions.
states: [
State {
}
]
transitions: [
Transitions {
}
]
// ----- Signal handlers
onWidthChanged: { // Always use curly braces.
}
// onCompleted and onDestruction signal handlers are always the last in
// the order.
Component.onCompleted: {
}
Component.onDestruction: {
}
// ----- Visual children.
Rectangle {
height: 50
anchors: { // For multiple assignments, use group notation.
top: parent.top
left: parent.left
right: parent.right
}
color: "red"
layer: {
enabled: true
samples: 4
}
}
Rectangle {
width: parent.width
height: 1
color: "green"
}
// ----- Qt provided non-visual children
Timer {
}
// ----- Custom non-visual children
MyCustomNonVisualType {
}
QtObject {
id: privates
property int diameter: 0
}
// ----- JavaScript functions
function collapse() {
}
function setCollapsed(value: bool) {
if (value === true) {
}
else {
}
}
}