来自中心 QML 的 SlideBar 句柄

SlideBar handle from center QML

在 qml 的 slidebar 中,幻灯片从头开始。有没有什么方法可以指定让它从中心开始。就像向左拖动时它应该显示颜色。就像有一个负滑块

我试过这样的东西,但对我来说(橙色进度)应该从中心开始,像平衡杆一样从中心向左和向右传播。

import QtQuick 2.0
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4

Item {
    Slider {
        anchors.centerIn: parent
        value: 0.5
        width: 400
        style: SliderStyle {
            groove: Rectangle {
                implicitHeight: 2
                color: "lightgrey"
                radius: 3

                Rectangle {
                    implicitHeight: 2
                    color: "orange"
                    radius: 3
                    implicitWidth: control.value * parent.width

                }
            }             
        }
    }
}

所以您正在寻找这样的东西?

Slider {
    id: slide
    anchors.centerIn: parent
    minimumValue: -1
    maximumValue: 1
    value: 0.0
    width: 400
    style: SliderStyle {
        groove: Rectangle {
            implicitHeight: 2
            color: "lightgrey"
            radius: 3

            Rectangle {
                anchors {
                    left: (control.value > 0 ? parent.horizontalCenter : undefined)
                    right: (control.value <= 0 ? parent.horizontalCenter : undefined)
                }

                implicitHeight: 2
                color: "orange"
                radius: 3
                width: Math.abs(control.value) * parent.width / 2

            }
        }
    }
}

对于非负值,应该很容易适应。当 anchors/margins 超过您的阈值时,只需将其设置为正确即可。 通过计算此段的值乘以段长度(以像素为单位)的百分比来计算宽度...