Я пытаюсь создать слайдер, который можно перемещать вверх и вниз с помощью мыши. Однако я хочу использовать собственное изображение в качестве фона. В настоящее время я пытаюсь реализовать это с помощью OpacityMask. По сути, я пытаюсь сделать непрозрачность 0 от того места, где ручка находится на правом конце ползунка.
Обычно я бы просто переместил прямоугольник того же цвета, что и фон, поверх него. Однако я хочу, чтобы любой элемент, находящийся под ползунком, отображался, когда ползунок отодвигается.
Как я могу создать это поведение?
import QtQuick 2.7
import QtQuick.Templates 2.0 as T
import QtGraphicalEffects 1.12
import "."
T.Slider {
id: control
implicitWidth: 200
implicitHeight: 26
handle: Rectangle {
x: control.visualPosition * (control.width - width)
y: (control.height - height) / 2
width: 20
height: 15
radius: 5
color: control.pressed ? "#f0f0f0" : "#f6f6f6"
border.color: "gray"
}
background: OpacityMask {
anchors.fill: sliderImage
source: sliderImage
maskSource: mask
}
Image{
id: sliderImage
source: "./Jarvis2/images/volume_barH.png"
height: 20
width: parent.width
visible: false
}
Item{
id: mask
anchors.fill: sliderImage
Rectangle{
id: outer
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.left: parent.left
width: control.visualPosition*parent.width
color: "gray"
opacity: 1
visible: false
}
Rectangle {
id: inner
color: "transparent"
z: 1
opacity: 1
anchors.left: outer.right
anchors.right: parent.right
anchors.top: outer.top
anchors.bottom: outer.bottom
visible: false
}
}
}
Ползунок на 100%:
Ползунок примерно на 70%:
Ползунок на отметке 24%