C
Qt Quick Ultralite swipe_game Demo
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial
import QtQuick 2.0
import StyleModule 1.0
/*
This component provides a switch with a label next to it.
*/
Item {
id: root
// NOTE: overwrite the Style value assignments if you want to use the component outside of this project
property alias font: label.font
property color textColor: Style.colorText
property color backgroundBorderColor: Style.colorLines
property int borderWidth: Style.lineSize
property color backgroundColor: checked ? Style.colorHighlight : Style.colorPageBackground
property color handleBorderColor: Style.colorText
property color handleColor: switchArea.pressed ? Style.colorHighlight : Style.colorPageBackground
property int radius: Style.buttonRadius
property int handleAnimationDuration: Style.animationDuration
property bool checked: false
property alias text: label.text
signal triggered()
implicitHeight: Style.buttonHeight
implicitWidth: Math.max(height * 2, label.width + Style.buttonTextMargins + switchArea.width)
Text {
id: label
anchors {
left: parent.left
verticalCenter: parent.verticalCenter
}
color: root.textColor
text: "Label"
}
MouseArea {
id: switchArea
anchors {
right: parent.right
top: parent.top
bottom: parent.bottom
}
width: height * 2
onClicked: root.triggered()
Rectangle {
id: switchBackground
anchors.fill: parent
radius: root.radius
color: root.backgroundBorderColor
Rectangle {
anchors {
fill: parent
margins: root.borderWidth
}
radius: root.radius
color: root.backgroundColor
}
}
Rectangle {
id: switchHandle
anchors {
top: parent.top
bottom: parent.bottom
}
width: height
x: root.checked ? parent.width - width : 0
radius: root.radius
color: root.handleBorderColor
Behavior on x {
NumberAnimation { duration: root.handleAnimationDuration }
}
Rectangle {
anchors {
fill: parent
margins: root.borderWidth
}
radius: root.radius
color: root.handleColor
}
}
}
}