Уведомления
Очистить все
Здравствуйте, изучаю SpinBox в QML и не могу понять: такое ощущение, что поддерживаются только целые числа. Все свойства (to, from, step и остальные) имеют тип int...
А как быть если нужны десятичные значения? В QT Widgets были QSpinBox и QDoubleSpinBox, не может же быть такого, что для QML остановились на полпути и не доделали такой базовый функционал.
Создатель темы Размещено : 16.08.2025 12:25
Доброго времени суток! 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)
}
}
Здесь полное описание - ссылка.
Размещено : 17.08.2025 10:21
@aveal спасибо, вроде получилось... Долго не мог догнать как поменять количество десятичных знаков, только потом заметил:
property int decimals: 2
Создатель темы Размещено : 18.08.2025 16:04