Flat风格的Qml范围滑块
- 2020 年 2 月 24 日
- 筆記
基于Qml的RangeSlider控件修改而成。

范围滑块代码
import QtQuick 2.5 import QtQuick.Controls 2.0 RangeSlider { id: root property color checkedColor: "#3498DB" first.value: 0.25 second.value: 0.75 background: Rectangle { x: root.leftPadding y: root.topPadding + root.availableHeight / 2 - height / 2 implicitWidth: 200 implicitHeight: 12 width: root.availableWidth height: implicitHeight radius: height / 2 color: "#EBEDEF" Rectangle { x: root.first.visualPosition * parent.width width: root.second.visualPosition * parent.width - x height: parent.height color: root.checkedColor radius: height / 2 } } first.handle: Rectangle { x: root.leftPadding + first.visualPosition * (root.availableWidth - width) y: root.topPadding + root.availableHeight / 2 - height / 2 implicitWidth: root.background.implicitHeight + 6 implicitHeight: implicitWidth radius: implicitWidth / 2 color: first.pressed ? Qt.darker(root.checkedColor, 1.2) : root.checkedColor border.color: Qt.darker(root.checkedColor, 0.93) } second.handle: Rectangle { x: root.leftPadding + second.visualPosition * (root.availableWidth - width) y: root.topPadding + root.availableHeight / 2 - height / 2 implicitWidth: root.background.implicitHeight + 6 implicitHeight: implicitWidth radius: implicitWidth / 2 color: second.pressed ? Qt.darker(root.checkedColor, 1.2) : root.checkedColor border.color: Qt.darker(root.checkedColor, 0.93) } }
范围滑块样式代码

GridLayout { width: root.width rows: 3 columns: 3 Repeater { model: ["#727CF5", "#0ACF97", "#F9375E", "#FFBC00", "#2B99B9", "#5A6268", "#EEF2F7", "#212730", "#3498DB"] RangeSlider { checkedColor: modelData } } }