1

我正在尝试创建自定义 QMLSlider样式,如下所示:

SliderStyle {
    groove: Item {
        anchors.verticalCenter: parent.verticalCenter
        implicitWidth: 500
        implicitHeight: 10
        Rectangle {
            radius: height/2
            anchors.fill: parent
            border.width: 1
            border.color: "#888"
            gradient: Gradient {
                GradientStop { color: "#0A406E" ; position: 0 }
                GradientStop { color: "#FFA800" ; position: 1 }
            }
        }
    }
}

然而,这里凹槽上的梯度是从toptobottom而不是leftto right。我尝试交换widthandheight值并将其旋转Rectangle-90 度,但滑块没有响应。此外,我永远无法沿着滑块控件的中心进行旋转,这使得放置有点问题。

我想知道是否有办法实现这种左->右梯度流。

4

1 回答 1

3

Rectangle的属性gradient允许构建简单的垂直渐变。对于更复杂的渐变,有LinearGradient,RadialGradientConicalGradient类型。

例如水平渐变:

import QtGraphicalEffects 1.0

SliderStyle {
    groove: Item {
        anchors.verticalCenter: parent.verticalCenter
        implicitWidth: 500
        implicitHeight: 10
        Rectangle {
            radius: height/2
            anchors.fill: parent
            border.width: 1
            border.color: "#888"
            layer.enabled: true
            layer.effect: LinearGradient {
                start: Qt.point(0, 0)
                end: Qt.point(500, 0)
                gradient: Gradient {
                    GradientStop { position: 0.0; color: "#0A406E" }
                    GradientStop { position: 1.0; color: "#FFA800" }
                }
            }
        }
    }
}
于 2016-02-02T06:06:02.243 回答