Класс QDoubleSpinBox
Класс QDoubleSpinBox предоставляет виджет спин-бокса, принимающий значения типа double. Подробнее...
| Заголовок: | #include <QDoubleSpinBox> |
| 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 | valueChanged(const QString &text) |
| void | valueChanged(double d) |
Подробное описание
QDoubleSpinBox позволяет пользователю выбирать значение, нажимая на кнопки «вверх» и «вниз» или клавиши со стрелками вверх и вниз на клавиатуре, чтобы увеличить или уменьшить текущее отображаемое значение. Пользователь также может ввести значение вручную. Поле спин-бокc поддерживает значения типа double, но может быть расширено для использования разных строк с помощью validate(), textFromValue() и valueFromText().
Каждый раз при изменении значения QDoubleSpinBox излучает два сигнала valueChanged(), один принимает значение типа double, а другой — QString. Перегрузка QString предоставляет значение с префиксом 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(). Текст в спин-боксе извлекается с помощью text() (который включает любой prefix() и suffix()), или с помощью cleanText() (который не имеет prefix(), не имеет suffix() и не содержит начальных или конечных пробелов).
Часто желательно предоставить пользователю специальный (часто по умолчанию) выбор помимо диапазона числовых значений. См. setSpecialValueText() для того, как это сделать с QDoubleSpinBox.
Примечание: Отображаемое значение QDoubleSpinBox ограничено 18 символами, в дополнение к возможному префиксу и суффиксу. Это ограничение используется для обеспечения возможности использования двойного спин-бокса даже с чрезвычайно большими значениями.
См. также QSpinBox, QDateTimeEdit, QSlider и Пример спин-боксов.
Документация по свойству
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) |
| void | valueChanged(const QString &text) |
См. также decimals.
Документация по функциям-членам
QDoubleSpinBox::QDoubleSpinBox(QWidget *parent = nullptr)
Конструирует спин-бокс с минимальным значением 0.0 и максимальным значением 99.99, значением шага 1.0 и точностью 2 десятичных знаков. Значение по умолчанию устанавливается в 0.00. Спин-бокс имеет указанный parent.
См. также setMinimum(), setMaximum() и setSingleStep().
void QDoubleSpinBox::valueChanged(const QString &text)
Это перегруженная функция.
Новое значение передается в text с prefix() и suffix().
Примечание: Сигнал valueChanged перегружен в этом классе. Для подключения к этому сигналу с помощью синтаксиса указателя на функцию Qt предоставляет удобную утилиту для получения указателя на функцию, как показано в этом примере:
[signal] Примечание: Сигнал уведомления для свойства value.
void QDoubleSpinBox::valueChanged(double d)
Этот сигнал генерируется всякий раз, когда значение спин-бокса изменяется. Новое значение передается в d.
Примечание: Сигнал valueChanged перегружен в этом классе. Для подключения к этому сигналу с помощью синтаксиса указателя на функцию Qt предоставляет удобную утилиту для получения указателя на функцию, как показано в этом примере:
connect(doubleSpinBox, QOverload<double>::of(&QDoubleSpinBox::valueChanged),
[=](double d){ /* ... */ }); Примечание: Сигнал уведомления для свойства value.
~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);
void QDoubleSpinBox::setStepType(QAbstractSpinBox::StepType stepType)
Устанавливает тип шага для спин-бокса на stepType, который представляет собой одиночный шаг или адаптивный десятичный шаг.
Адаптивный десятичный шаг означает, что размер шага будет постоянно корректироваться до степени десяти, меньшей текущего значения value. Таким образом, когда значение равно 1100, шаг устанавливается в 100, поэтому увеличение на один шаг увеличивает его до 1200. Для 1200 увеличение на один шаг приводит к 1300. Для отрицательных значений уменьшение на один шаг от -1100 переходит к -1200.
Это также работает для любых десятичных значений, 0,041 увеличивается до 0,042 при одном шаге.
Направление шага учитывается для обработки граничных случаев, поэтому уменьшение на один шаг от 100 приводит к значению 99, а не 90. Таким образом, шаг вверх, за которым следует шаг вниз (или наоборот), всегда возвращает начальное значение; 99 -> 100 -> 99.
Установка этого приведет к тому, что спин-бокс проигнорирует значение singleStep, хотя оно сохраняется, чтобы singleStep вступило в силу, если адаптивный десятичный шаг будет позже отключён.
Эта функция была введена в Qt 5.12.
Примечание: Функция-сеттер для свойства stepType.
См. также stepType().
[virtual] QString QDoubleSpinBox::textFromValue(double value) const
Эта виртуальная функция используется спин-боксом всякий раз, когда ему нужно отобразить заданное значение value. Стандартная реализация возвращает строку, содержащую value, напечатанное с использованием 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-5.13/qdoublespinbox.html