Здравствуйте, изучаю SpinBox в QML и не могу понять: такое ощущение, что поддерживаются только целые числа. Все свойства (to, from, step и остальные) имеют тип int...
А как быть если нужны десятичные значения? В QT Widgets были QSpinBox и QDoubleSpinBox, не может же быть такого, что для QML остановились на полпути и не доделали такой базовый функционал.
Доброго времени суток! SpinBox можно кастомизировать под поддержку любого тип данных, вот вариант для float значений:
SpinBox { id: spinBox from: 0 value: decimalToInt(1.1) to: decimalToInt(100) stepSize: decimalFactor editable: true anchors.centerIn: parent property int decimals: 2 property real realValue: value / decimalFactor readonly property int decimalFactor: Math.pow(10, decimals) function decimalToInt(decimal) { return decimal * decimalFactor } validator: DoubleValidator { bottom: Math.min(spinBox.from, spinBox.to) top: Math.max(spinBox.from, spinBox.to) decimals: spinBox.decimals notation: DoubleValidator.StandardNotation } textFromValue: function(value, locale) { return Number(value / decimalFactor).toLocaleString(locale, 'f', spinBox.decimals) } valueFromText: function(text, locale) { return Math.round(Number.fromLocaleString(locale, text) * decimalFactor) } }
Здесь полное описание - ссылка.