Класс QSpinBox
Класс QSpinBox предоставляет виджет спин-бокса. Подробнее...
| Заголовок: | #include <QSpinBox> |
| qmake: | QT += widgets |
| Наследует: | QAbstractSpinBox |
Свойства
|
|
Открытые функции
| QSpinBox(QWidget *parent = nullptr) | |
| virtual | ~QSpinBox() |
| QString | cleanText() const |
| int | displayIntegerBase() const |
| int | maximum() const |
| int | minimum() const |
| QString | prefix() const |
| void | setDisplayIntegerBase(int base) |
| void | setMaximum(int max) |
| void | setMinimum(int min) |
| void | setPrefix(const QString &prefix) |
| void | setRange(int minimum, int maximum) |
| void | setSingleStep(int val) |
| void | setStepType(QAbstractSpinBox::StepType stepType) |
| void | setSuffix(const QString &suffix) |
| int | singleStep() const |
| QAbstractSpinBox::StepType | stepType() const |
| QString | suffix() const |
| int | value() const |
Открытые слоты
| void | setValue(int val) |
Сигналы
| void | textChanged(const QString &text) |
| void | valueChanged(int i) |
Защищенные функции
| virtual QString | textFromValue(int value) const |
| virtual int | valueFromText(const QString &text) const |
Переопределенные защищенные функции
| virtual bool | event(QEvent *event) override |
| virtual void | fixup(QString &input) const override |
| virtual QValidator::State | validate(QString &text, int &pos) const override |
Подробное описание
QSpinBox предназначен для работы с целыми числами и дискретными наборами значений (например, названиями месяцев); для значений с плавающей точкой используйте QDoubleSpinBox.
QSpinBox позволяет пользователю выбирать значение, нажимая на кнопки «вверх/вниз» или нажимая клавиши «вверх/вниз» на клавиатуре для увеличения/уменьшения текущего отображаемого значения. Пользователь также может ввести значение вручную. Спин-бокс поддерживает целые значения, но может быть расширен для использования различных строк с помощью validate(), textFromValue() и valueFromText().
Каждый раз, когда значение изменяется, QSpinBox испускает сигналы valueChanged() и textChanged(), первый — со значением типа int, а второй — типа QString. Сигнал textChanged() предоставляет значение с prefix() и suffix(). Текущее значение можно получить с помощью value() и установить с помощью setValue().
Нажатие кнопок «вверх/вниз» или использование клавиш ускорения «вверх/вниз» увеличит или уменьшит текущее значение на шаг singleStep(). Если вы хотите изменить это поведение, вы можете переопределить виртуальную функцию stepBy(). Минимальное и максимальное значение, а также шаг могут быть установлены при помощи одного из конструкторов и могут быть изменены позднее с помощью setMinimum(), setMaximum() и setSingleStep().
Большинство спин-боксов имеют направленность, но QSpinBox также может работать как спин-бокс с циклическим поведением, т.е. если диапазон составляет 0-99, а текущее значение — 99, нажатие «вверх» даст 0, если wrapping() установлено в true. Используйте setWrapping(), если вам нужно циклическое поведение.
Отображаемое значение можно добавить спереди и сзади произвольными строками, указывающими, например, валюту или единицу измерения. См. setPrefix() и setSuffix(). Текст в спин-боксе извлекается с помощью text() (который включает любой prefix() и suffix()), или с помощью cleanText() (который не имеет prefix(), не имеет suffix() и не имеет начальных или конечных пробелов).
Часто желательно предоставить пользователю специальный (часто по умолчанию) выбор в дополнение к диапазону числовых значений. См. setSpecialValueText() для того, как это сделать с QSpinBox.
Наследование класса QSpinBox
Если prefix(), suffix() и specialValueText() не обеспечивают достаточного управления, вы наследуете QSpinBox и переопределяете valueFromText() и textFromValue(). Например, вот код для пользовательского спин-бокса, который позволяет пользователю вводить размеры значков (например, "32 x 32"):
int IconSizeSpinBox::valueFromText(const QString &text) const
{
static const QRegularExpression regExp(tr("(\\d+)(\\s*[xx]\\s*\\d+)?"));
Q_ASSERT(regExp.isValid());
const QRegularExpressionMatch match = regExp.match(text);
if (match.isValid())
return match.captured(1).toInt();
return 0;
}
QString IconSizeSpinBox::textFromValue(int value) const
{
return tr("%1 x %1").arg(value);
} См. пример Значки для полного исходного кода.
См. также QDoubleSpinBox, QDateTimeEdit, QSlider и Пример спин-боксов.
Документация свойств
cleanText : const QString
Это свойство содержит текст поля ввода, исключая любой префикс, суффикс или начальные и конечные пробелы.
Функции доступа:
| QString | cleanText() const |
См. также text, QSpinBox::prefix и QSpinBox::suffix.
displayIntegerBase : int
Это свойство определяет систему счисления, используемую для отображения значения поля ввода.
Значение по умолчанию для displayIntegerBase — 10.
Это свойство было добавлено в Qt 5.2.
Функции доступа:
| int | displayIntegerBase() const |
| void | setDisplayIntegerBase(int base) |
См. также textFromValue() и valueFromText().
maximum : int
Это свойство содержит максимальное значение поля ввода.
При установке этого свойства, минимальное значение корректируется при необходимости, чтобы диапазон оставался допустимым.
По умолчанию максимальное значение равно 99.
Функции доступа:
| int | maximum() const |
| void | setMaximum(int max) |
См. также setRange() и specialValueText.
minimum : int
Это свойство содержит минимальное значение поля ввода.
При установке этого свойства, максимальное значение корректируется при необходимости, чтобы диапазон оставался допустимым.
По умолчанию минимальное значение равно 0.
Функции доступа:
| int | minimum() const |
| void | setMinimum(int min) |
См. также setRange() и specialValueText.
prefix : QString
Это свойство содержит префикс поля ввода.
Префикс добавляется в начало отображаемого значения. Обычно используется для отображения единиц измерения или символов валюты. Например:
sb->setPrefix("$"); Чтобы отключить отображение префикса, установите это свойство в пустую строку. По умолчанию префикс отсутствует. Префикс не отображается, когда value() == minimum() и specialValueText() задано.
Если префикс не задан, prefix() возвращает пустую строку.
Функции доступа:
| QString | prefix() const |
| void | setPrefix(const QString &prefix) |
См. также suffix(), setSuffix(), specialValueText() и setSpecialValueText().
singleStep : int
Это свойство содержит значение шага.
Когда пользователь использует стрелки для изменения значения поля ввода, значение будет увеличиваться/уменьшаться на величину singleStep. Значение по умолчанию равно 1. Установка значения singleStep меньше 0 не производит никаких действий.
Функции доступа:
| int | singleStep() const |
| void | setSingleStep(int val) |
stepType : StepType
Это свойство содержит тип шага.
Тип шага может быть шагом или адаптивным десятичным шагом.
Функции доступа:
| QAbstractSpinBox::StepType | stepType() const |
| void | setStepType(QAbstractSpinBox::StepType stepType) |
suffix : QString
Это свойство содержит суффикс поля ввода.
Суффикс добавляется в конец отображаемого значения. Обычно используется для отображения единиц измерения или символов валюты. Например:
sb->setSuffix(" km"); Чтобы отключить отображение суффикса, установите это свойство в пустую строку. По умолчанию суффикс отсутствует. Суффикс не отображается для minimum(), если specialValueText() задано.
Если суффикс не задан, suffix() возвращает пустую строку.
Функции доступа:
| QString | suffix() const |
| void | setSuffix(const QString &suffix) |
См. также prefix(), setPrefix(), specialValueText() и setSpecialValueText().
value : int
Это свойство содержит значение поля ввода.
setValue() будет испускать valueChanged(), если новое значение отличается от старого. Свойство value имеет второй сигнал уведомления, который включает префикс и суффикс поля ввода.
Функции доступа:
| int | value() const |
| void | setValue(int val) |
Сигнал уведомления:
| void | valueChanged(int i) |
Документация функций-членов
QSpinBox::QSpinBox(QWidget *parent = nullptr)
Конструирует поле ввода с минимальным значением 0, максимальным 99, значением шага 1. Значение по умолчанию 0. Родительским элементом является parent.
См. также setMinimum(), setMaximum() и setSingleStep().
[signal] void QSpinBox::textChanged(const QString &text)
Этот сигнал испускается всякий раз, когда изменяется текст поля ввода. Новый текст передаётся в text с prefix() и suffix().
Эта функция была добавлена в Qt 5.14.
[signal] void QSpinBox::valueChanged(int i)
Этот сигнал испускается всякий раз, когда изменяется значение поля ввода. Новое целое значение передаётся в i.
Примечание: Сигнал-уведомление для свойства value.
Примечание: Сигнал valueChanged перегружен в этом классе. Для подключения к этому сигналу с помощью синтаксиса указателя на функцию Qt предоставляет удобную вспомогательную функцию для получения указателя на функцию, как показано в этом примере:
connect(spinBox, QOverload<int>::of(&QSpinBox::valueChanged),
[=](int i){ /* ... */ });
[virtual] QSpinBox::~QSpinBox()
Деструктор.
[override virtual protected] bool QSpinBox::event(QEvent *event)
Переопределяет: QAbstractSpinBox::event(QEvent *event).
[override virtual protected] void QSpinBox::fixup(QString &input) const
Переопределяет: QAbstractSpinBox::fixup(QString &input) const.
void QSpinBox::setRange(int minimum, int maximum)
Удобная функция для установки минимального и максимального значений с помощью одного вызова функции.
setRange(minimum, maximum);
эквивалентно:
setMinimum(minimum); setMaximum(maximum);
void QSpinBox::setStepType(QAbstractSpinBox::StepType stepType)
Устанавливает тип шага для поля ввода в stepType, который может быть шагом или адаптивным десятичным шагом.
Адаптивный десятичный шаг означает, что размер шага будет непрерывно корректироваться до степени десятки ниже текущего значения. Таким образом, когда значение равно 1100, шаг устанавливается в 100, поэтому увеличение шага один раз увеличивает его до 1200. Для 1200 увеличение шага переводит его в 1300. Для отрицательных значений уменьшение шага от -1100 переходит к -1200.
Направление шага учитывается для обработки крайних случаев, поэтому уменьшение шага с 100 переводит значение в 99, а не в 90. Таким образом, увеличение шага, за которым следует уменьшение шага, или наоборот, всегда приводит к исходному значению; 99 -> 100 -> 99.
Установка этого параметра заставит спин-бокс игнорировать значение singleStep, хотя оно сохраняется, чтобы singleStep вступил в силу, если адаптивный десятичный шаг позже будет выключен.
Примечание: Функция-сеттер для свойства stepType.
Эта функция была представлена в Qt 5.12.
См. также stepType().
[virtual protected] QString QSpinBox::textFromValue(int value) const
Эта виртуальная функция используется спин-боксом всякий раз, когда ему нужно отобразить заданное значение value. Стандартная реализация возвращает строку, содержащую value, напечатанное стандартным способом с использованием QWidget::locale().toString(), но с удалённым разделителем тысяч, если не задано setGroupSeparatorShown(). Переопределения могут возвращать любые данные. (См. пример в подробном описании.)
Примечание: QSpinBox не вызывает эту функцию для specialValueText(), и ни prefix(), ни suffix() не должны включаться в возвращаемое значение.
Если вы переопределяете эту функцию, вам может потребоваться также переопределить valueFromText() и validate()
См. также valueFromText(), validate() и QLocale::groupSeparator().
[override virtual protected] QValidator::State QSpinBox::validate(QString &text, int &pos) const
Переопределяет: QAbstractSpinBox::validate(QString &input, int &pos) const.
[virtual protected] int QSpinBox::valueFromText(const QString &text) const
Эта виртуальная функция используется спин-боксом всякий раз, когда ему необходимо интерпретировать введённый пользователем текст text как значение.
Подклассы, которым необходимо отображать значения спин-бокса нечисловым способом, должны переопределить эту функцию.
Примечание: QSpinBox обрабатывает specialValueText() отдельно; эта функция касается только других значений.
См. также textFromValue() и validate().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qspinbox.html