73 lines
2.1 KiB
QML
73 lines
2.1 KiB
QML
import QtQuick 2.12
|
|
import QtQuick.Controls 2.12
|
|
|
|
Slider {
|
|
id: slider
|
|
leftPadding: 0
|
|
rightPadding: leftPadding
|
|
topPadding: 0
|
|
bottomPadding: topPadding
|
|
|
|
property bool enableRadius: true
|
|
property bool fullHeight: false
|
|
property color backgroundColor: theme.controls.slider.background
|
|
property color foregroundColor: theme.controls.slider.foreground
|
|
|
|
property alias toolTip: toolTip
|
|
property alias mouseArea: mouseArea
|
|
|
|
background: Rectangle {
|
|
color: backgroundColor
|
|
x: slider.leftPadding
|
|
y: slider.topPadding + slider.availableHeight / 2 - height / 2
|
|
|
|
implicitWidth: 200
|
|
implicitHeight: theme.controls.slider.height
|
|
width: slider.availableWidth
|
|
height: fullHeight ? slider.height : implicitHeight
|
|
radius: enableRadius ? theme.controls.slider.radius : 0
|
|
|
|
Rectangle {
|
|
width: slider.visualPosition * parent.width
|
|
height: parent.height
|
|
color: foregroundColor
|
|
radius: parent.radius
|
|
}
|
|
}
|
|
|
|
handle: Rectangle {
|
|
x: slider.leftPadding + slider.visualPosition *
|
|
(slider.availableWidth - width)
|
|
y: slider.topPadding + slider.availableHeight / 2 - height / 2
|
|
|
|
implicitWidth: theme.controls.slider.handle.size
|
|
implicitHeight: implicitWidth
|
|
radius: implicitWidth / 2
|
|
|
|
color: slider.pressed ?
|
|
theme.controls.slider.handle.pressedInside :
|
|
theme.controls.slider.handle.inside
|
|
|
|
border.color: slider.pressed ?
|
|
theme.controls.slider.handle.pressedBorder :
|
|
theme.controls.slider.handle.border
|
|
|
|
Behavior on color { HColorAnimation {} }
|
|
Behavior on border.color { HColorAnimation {} }
|
|
}
|
|
|
|
HToolTip {
|
|
id: toolTip
|
|
parent: slider.handle
|
|
visible: slider.pressed && text
|
|
delay: 0
|
|
}
|
|
|
|
MouseArea {
|
|
id: mouseArea
|
|
anchors.fill: parent
|
|
acceptedButtons: Qt.NoButton
|
|
cursorShape: slider.hovered ? Qt.PointingHandCursor : Qt.ArrowCursor
|
|
}
|
|
}
|