QML Gauge. Как сделать индикатор от нуля?
Всем привет! Вопрос следующий. Как мне можно сделать индикатор Gauge, от -5000 до 5000, чтобы полоса начинала всегда заполняться с нуля? На данный момент у меня получилось написать следующий код:
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.0
import QtQuick.Controls.Styles 1.4
import QtQuick.Extras 1.4
import QtQuick.Extras.Private 1.0
import QtGraphicalEffects 1.0
import QtCharts 2.3
Window {
id: winapp
visible: true
width: 1000
height: 630
color: "#1b2153"
title: qsTr("FirstProject")
Gauge {
id: gauge1
x: 20
y: 53
width: 44
height: 547
anchors.bottom: parent.bottom
anchors.bottomMargin: 30
value: 1246
minimumValue: -5000
maximumValue: 5000
tickmarkStepSize: 500
formatValue: function(value) {
return value.toFixed(0);
}
property double minBarValue: 0
style: GaugeStyle{
valueBar: Item {
implicitWidth: 16
Rectangle {
width: parent.width
height: (gauge1.value === gauge1.minimumValue) ? 0 : parent.height / (gauge1.value - gauge1.minimumValue) * (gauge1.value - gauge1.minBarValue)
}
}
}
}
}
Соответственно картинка следующая:

Но когда я хочу поставить текущее значение value например -1000 индикатор перестает работать. Я не могу понять где ошибка. Пожалуйста подскажите
Ответы (1 шт):
Автор решения: Alexander Chernin
→ Ссылка
Вот так все прекрасно работает:
import QtQuick 2.12
import QtQuick.Window 2.12
import QtCharts 2.3
import QtQuick.Extras 1.4
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Gauge {
minimumValue: -40
value: 0 // и от 0, и от -40 и так далее
maximumValue: 40
anchors.centerIn: parent
formatValue: function(value) {
return value.toFixed(0);
}
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.LeftButton | Qt.RightButton
onClicked: {
if (mouse.button == Qt.LeftButton)
parent.value += 5;
else
parent.value -= 5;
}
}
}
}