Класс 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 | textChanged(const QString &text) |
| void | valueChanged(double d) |
Подробное описание
QDoubleSpinBox позволяет пользователю выбирать значение, нажимая кнопки вверх и вниз или нажимая клавиши Вверх или Вниз на клавиатуре, чтобы увеличить или уменьшить текущее отображаемое значение. Пользователь также может ввести значение вручную. Поле спин-бокc поддерживает значения типа double, но может быть расширено для использования различных строк с помощью validate(), textFromValue() и valueFromText().
Каждый раз, когда значение изменяется, QDoubleSpinBox генерирует сигналы valueChanged() и textChanged(), первый из которых предоставляет значение типа double, а второй — QString. Сигнал textChanged() предоставляет значение с префиксом prefix() и суффиксом suffix(). Текущее значение можно получить с помощью value() и установить с помощью setValue().
Примечание: QDoubleSpinBox округляет числа, чтобы они могли быть отображены с текущей точностью. В QDoubleSpinBox с количеством десятичных знаков, установленным в 2, вызов setValue(2.555) приведет к тому, что value() вернёт 2.56.
Нажатие кнопок вверх и вниз или использование клавиш ускорителей Вверх и Вниз на клавиатуре увеличит или уменьшит текущее значение на величину шага singleStep(). Если вам нужно изменить это поведение, вы можете переопределить виртуальную функцию stepBy(). Минимальное и максимальное значение, а также шаг могут быть установлены при помощи одного из конструкторов и изменены позже с помощью setMinimum(), setMaximum() и setSingleStep(). Поле спин-бокса имеет точность по умолчанию в 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 и Пример Spin Boxes.
Документация по свойствам
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] void QDoubleSpinBox::textChanged(const QString &text)
Этот сигнал испускается всякий раз, когда изменяется текст поля ввода. Новый текст передаётся в text вместе с prefix() и suffix().
Эта функция была добавлена в Qt 5.14.
[signal] void QDoubleSpinBox::valueChanged(double d)
Этот сигнал испускается всякий раз, когда изменяется значение поля ввода. Новое значение передаётся в d.
Примечание: Сигнал-уведомление для свойства value.
Примечание: Сигнал valueChanged перегружен в этом классе. Для подключения к этому сигналу с помощью синтаксиса указателя на функцию Qt предоставляет удобную вспомогательную функцию для получения указателя на функцию, как показано в этом примере:
connect(doubleSpinBox, QOverload<double>::of(&QDoubleSpinBox::valueChanged),
[=](double d){ /* ... */ });
[virtual] QDoubleSpinBox::~QDoubleSpinBox()
Деструктор.
[override virtual] void QDoubleSpinBox::fixup(QString &input) const
Переопределяет: QAbstractSpinBox::fixup(QString &input) const.
void QDoubleSpinBox::setRange(double minimum, double maximum)
Функция-удобство для установки минимального и максимального значений с помощью одного вызова функции.
END_OF_DOCUMENT_MARKERПримечание: максимальные и минимальные значения будут округляться в соответствии с свойством 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 вступил в силу, если адаптивный десятичный шаг будет позже отключен.
Примечание: Функция-сеттер для свойства stepType.
Эта функция была добавлена в Qt 5.12.
См. также 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.15/qdoublespinbox.html