#qt #qml #qtquickcontrols
#qt #qml #qtquickcontrols
Вопрос:
В ползунке в qml слайд начинается с самого начала. Есть ли какой-либо способ, которым мы могли бы указать, как заставить его начинаться с центра. Например, при перетаскивании влево он должен отображать цвет. точно так же, как наличие отрицательного ползунка
Я попробовал что-то подобное, но для меня это (оранжевый прогресс) должно начинаться с центра и распространяться влево и вправо от центра, как балансир.
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
}
}
}
}
}
Комментарии:
1. Для QtQuick. Элементы управления 1 у вас есть
minimumValue
иmaximumValue
. В QtQuick. Элементы управления 2 у вас естьfrom
иto
. Дело в цвете, я так и не понял.2. @Derm Для меня это (оранжевый прогресс) должно начинаться с центра и распространяться влево и вправо от центра, как балансир
Ответ №1:
Итак, вы ищете что-то подобное?
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
}
}
}
}
Для неотрицательных значений это должно быть довольно легко адаптировать. Просто установите якоря / поля правильно, когда он превысит ваш порог.
Ширина вычисляется путем вычисления процента от значения для этого сегмента, умноженного на длину сегмента (в пикселях)…
Комментарии:
1. точно… Это то, что я пытался сделать