Класс QDoubleSpinBox
Класс QDoubleSpinBox предоставляет виджет спин-бокса, принимающий значения типа double. Подробнее...
| Заголовок: | #include <QDoubleSpinBox> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Наследуется от: | QAbstractSpinBox |
Свойства
|
Открытые функции
| QDoubleSpinBox(QWidget *parent = nullptr) | |
| virtual | ~QDoubleSpinBox() |
| QString | cleanText() const |
| int | decimals() const |
| double | maximum() const |
| double | minimum() const |
| QString | prefix() const |
| void | setDecimals(int prec) |
| void | setMaximum(double max) |
| void | setMinimum(double min) |
| void | setPrefix(const QString &prefix) |
| void | setRange(double minimum, double maximum) |
| void | setSingleStep(double val) |
| void | setStepType(QAbstractSpinBox::StepType stepType) |
| void | setSuffix(const QString &suffix) |
| double | singleStep() const |
| QAbstractSpinBox::StepType | stepType() const |
| QString | suffix() const |
| virtual QString | textFromValue(double value) const |
| double | value() const |
| virtual double | valueFromText(const QString &text) const |
Переопределённые открытые функции
| virtual void | fixup(QString &input) const override |
| virtual QValidator::State | validate(QString &text, int &pos) const override |
Открытые слоты
| void | setValue(double val) |
Сигналы
| void | textChanged(const QString &text) |
| void | valueChanged(double d) |
Подробное описание
QDoubleSpinBox позволяет пользователю выбирать значение, нажимая кнопки вверх и вниз или нажимая клавиши Вверх и Вниз на клавиатуре для увеличения или уменьшения текущего отображаемого значения. Пользователь также может ввести значение вручную. Поле спин-бокc поддерживает двойные значения, но может быть расширено для использования различных строк с помощью validate(), textFromValue() и valueFromText().
Каждый раз при изменении значения QDoubleSpinBox излучает сигналы valueChanged() и textChanged(), первый из которых предоставляет двойное значение, а второй — QString. Сигнал textChanged() предоставляет значение с префиксом prefix() и суффиксом suffix(). Текущее значение можно получить с помощью value() и установить с помощью setValue().
Примечание: QDoubleSpinBox будет округлять числа, чтобы они могли быть отображены с текущей точностью. В QDoubleSpinBox с десятичными знаками, установленными на 2, вызов setValue(2.555) приведет к тому, что value() вернет 2.56.
Нажатие кнопок вверх и вниз или использование клавиш-акселераторов Вверх и Вниз увеличит или уменьшит текущее значение на шаг singleStep(). Если вы хотите изменить это поведение, вы можете переопределить виртуальную функцию stepBy(). Минимальное и максимальное значение, а также размер шага можно установить при помощи одного из конструкторов, и их можно изменить позже с помощью setMinimum(), setMaximum() и setSingleStep(). Поле спин-бокc имеет точность по умолчанию в 2 десятичных знака, но это можно изменить, используя setDecimals().
Большинство спин-боксов являются направленными, но QDoubleSpinBox также может работать как циклическое поле спин-боксов, т. е. если диапазон составляет от 0,0 до 99,9, а текущее значение равно 99,9, нажатие «вверх» даст 0, если wrapping() установлено в true. Используйте setWrapping(), если вам нужно циклическое поведение.
Отображаемое значение можно дополнить и добавить произвольными строками, например, валютой или единицей измерения. См. setPrefix() и setSuffix(). Текст в поле спин-бокc извлекается с помощью text() (который включает любой prefix() и suffix()), или с помощью cleanText() (в котором нет prefix(), нет suffix() и нет пробелов в начале и конце).
Часто бывает желательно дать пользователю специальный (часто по умолчанию) выбор в дополнение к диапазону числовых значений. См. setSpecialValueText() для того, как это сделать с помощью QDoubleSpinBox.
Примечание: Отображаемое значение QDoubleSpinBox ограничено 18 символами в дополнение к возможным префиксу и суффиксу. Это ограничение используется для того, чтобы поле спин-боксов для чисел с плавающей запятой оставалось работоспособным даже при очень больших значениях.
См. также QSpinBox, QDateTimeEdit, QSlider и Пример спин-боксов.
END_OF_DOCUMENT_MARKERДокументация по свойству
[read-only] cleanText : const QString
Это свойство содержит текст поля ввода, исключая любой префикс, суффикс или начальные и конечные пробелы.
Функции доступа:
| QString | cleanText() const |
См. также text, QDoubleSpinBox::prefix и QDoubleSpinBox::suffix.
decimals : int
Это свойство содержит точность поля ввода в десятичных знаках.
Определяет, сколько десятичных знаков поле ввода будет использовать для отображения и интерпретации чисел с плавающей точкой.
Предупреждение: Максимальное значение для decimals составляет DBL_MAX_10_EXP + DBL_DIG (т.е. 323) из-за ограничений типа double.
Примечание: Максимальное, минимальное и текущее значение могут измениться в результате изменения этого свойства.
Функции доступа:
| int | decimals() const |
| void | setDecimals(int prec) |
maximum : double
Это свойство содержит максимальное значение поля ввода.
При установке этого свойства свойство minimum корректируется при необходимости, чтобы диапазон оставался корректным.
Максимальное значение по умолчанию составляет 99.99.
Примечание: Максимальное значение будет округлено в соответствии со свойством decimals.
Функции доступа:
| double | maximum() const |
| void | setMaximum(double max) |
См. также decimals и setRange().
minimum : double
Это свойство содержит минимальное значение поля ввода.
При установке этого свойства свойство maximum корректируется при необходимости, чтобы диапазон оставался корректным.
Минимальное значение по умолчанию составляет 0.0.
Примечание: Минимальное значение будет округлено в соответствии со свойством decimals.
Функции доступа:
| double | minimum() const |
| void | setMinimum(double min) |
См. также decimals, setRange() и specialValueText.
prefix : QString
Это свойство содержит префикс поля ввода.
Префикс добавляется в начало отображаемого значения. Типичное использование — отображение единицы измерения или символа валюты. Например:
spinbox->setPrefix("$"); Чтобы отключить отображение префикса, установите это свойство в пустую строку. По умолчанию префикс отсутствует. Префикс не отображается, когда value() == minimum() и установлено specialValueText().
Если префикс не установлен, prefix() возвращает пустую строку.
Функции доступа:
| QString | prefix() const |
| void | setPrefix(const QString &prefix) |
См. также suffix(), setSuffix(), specialValueText() и setSpecialValueText().
singleStep : double
Это свойство содержит значение шага.
Когда пользователь использует стрелки для изменения значения поля ввода, значение будет увеличиваться/уменьшаться на величину singleStep. Значение по умолчанию равно 1.0. Установка значения singleStep меньше 0 ничего не меняет.
Функции доступа:
| double | singleStep() const |
| void | setSingleStep(double val) |
stepType : StepType
Это свойство содержит тип шага.
Тип шага может быть шагом или адаптивным десятичным шагом.
Функции доступа:
| QAbstractSpinBox::StepType | stepType() const |
| void | setStepType(QAbstractSpinBox::StepType stepType) |
suffix : QString
Это свойство содержит суффикс поля ввода.
Суффикс добавляется в конец отображаемого значения. Типичное использование — отображение единицы измерения или символа валюты. Например:
spinbox->setSuffix(" km"); Чтобы отключить отображение суффикса, установите это свойство в пустую строку. По умолчанию суффикса нет. Суффикс не отображается для minimum(), если установлено specialValueText().
Если суффикс не установлен, suffix() возвращает пустую строку.
Функции доступа:
| QString | suffix() const |
| void | setSuffix(const QString &suffix) |
См. также prefix(), setPrefix(), specialValueText() и setSpecialValueText().
value : double
Это свойство содержит значение поля ввода.
setValue() будет излучать valueChanged(), если новое значение отличается от старого. Свойство value имеет второй сигналы уведомления, включающий префикс и суффикс поля ввода.
Примечание: Значение будет округлено для отображения с текущими настройками decimals.
Функции доступа:
| double | value() const |
| void | setValue(double val) |
Сигнал уведомления:
| void | valueChanged(double d) |
См. также decimals.
Документация по членам-функциям
QDoubleSpinBox::QDoubleSpinBox(QWidget *parent = nullptr)
Конструирует поле ввода с минимальным значением 0.0 и максимальным значением 99.99, значением шага 1.0 и точностью 2 десятичных знака. Значение по умолчанию 0.00. Поле ввода имеет заданного родителя parent.
См. также setMinimum(), setMaximum() и setSingleStep().
[signal, since 5.14] void QDoubleSpinBox::textChanged(const QString &text)
Этот сигнал излучается всякий раз, когда изменяется текст поля ввода. Новый текст передаётся в text с prefix() и suffix().
Эта функция была добавлена в Qt 5.14.
[signal] void QDoubleSpinBox::valueChanged(double d)
Этот сигнал излучается всякий раз, когда изменяется значение поля ввода. Новое значение передаётся в d.
Примечание: Сигнал уведомления для свойства value.
[virtual] QDoubleSpinBox::~QDoubleSpinBox()
Деструктор.
[override virtual] void QDoubleSpinBox::fixup(QString &input) const
Переопределяет: QAbstractSpinBox::fixup(QString &input) const.
void QDoubleSpinBox::setRange(double minimum, double maximum)
Удобная функция для установки минимального и максимального значений с помощью одного вызова функции.
Примечание: Максимальное и минимальное значения будут округлены в соответствии со свойством decimals.
setRange(minimum, maximum);
эквивалентно:
setMinimum(minimum); setMaximum(maximum);
См. также минимальное значение и максимальное значение.
[since 5.12] void QDoubleSpinBox::setStepType(QAbstractSpinBox::StepType stepType)
Устанавливает тип шага для спин-бокса на stepType, который представляет собой одинарный шаг или адаптивный десятичный шаг.
Адаптивный десятичный шаг означает, что размер шага будет непрерывно корректироваться до одной степени десяти ниже текущего значения значения. Таким образом, когда значение равно 1100, шаг устанавливается в 100, поэтому при увеличении значения на один шаг оно увеличится до 1200. Для значения 1200 при увеличении на один шаг оно увеличится до 1300. Для отрицательных значений при уменьшении от -1100 значение изменится на -1200.
Это также работает для любых десятичных значений, например, 0,041 увеличивается до 0,042 при увеличении на один шаг.
Направление шага учитывается для обработки граничных случаев, поэтому при уменьшении от 100 значение изменяется на 99 вместо 90. Таким образом, увеличение на один шаг, за которым следует уменьшение на один шаг (или наоборот) всегда возвращает исходное значение; 99 -> 100 -> 99.
Установка этого параметра заставит спин-бокс проигнорировать значение singleStep, хотя оно сохраняется, чтобы singleStep вступил в силу, если адаптивный десятичный шаг позже будет выключен.
Примечание: Функция-сеттер для свойства stepType.
Эта функция была добавлена в Qt 5.12.
См. также stepType().
[virtual] QString QDoubleSpinBox::textFromValue(double value) const
Эта виртуальная функция используется спин-боксом всякий раз, когда ему нужно отобразить заданное значение. Стандартная реализация возвращает строку, содержащую значение, напечатанное с использованием QWidget::locale().toString(value, QLatin1Char('f'), decimals()) и удалит разделитель тысяч, если не установлено setGroupSeparatorShown(). Переопределения могут возвращать что угодно.
Примечание: QDoubleSpinBox не вызывает эту функцию для specialValueText(), и ни prefix(), ни suffix() не должны включаться в возвращаемое значение.
Если вы переопределяете эту функцию, вам также может потребоваться переопределить valueFromText().
См. также valueFromText() и QLocale::groupSeparator().
[override virtual] QValidator::State QDoubleSpinBox::validate(QString &text, int &pos) const
Переопределяет: QAbstractSpinBox::validate(QString &input, int &pos) const.
[virtual] double QDoubleSpinBox::valueFromText(const QString &text) const
Эта виртуальная функция используется спин-боксом всякий раз, когда ему нужно интерпретировать text, введённую пользователем, как значение.
Подклассы, которым необходимо отображать значения спин-бокса нечисловым способом, должны переопределить эту функцию.
Примечание: QDoubleSpinBox обрабатывает specialValueText() отдельно; эта функция касается только других значений.
См. также textFromValue() и validate().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qdoublespinbox.html