Класс QSpinBox
Класс QSpinBox предоставляет виджет спин-бокc. Подробнее...
| Заголовок: | #include <QSpinBox> |
| qmake: | QT += widgets |
| Наследует: | QAbstractSpinBox |
Свойства
|
|
- 12 свойств унаследовано от QAbstractSpinBox
- 59 свойств унаследовано от QWidget
- 1 свойство унаследовано от QObject
Открытые функции
| 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 |
- 30 открытых функций унаследовано от QAbstractSpinBox
- 214 открытых функций унаследовано от QWidget
- 31 открытых функций унаследовано от QObject
- 14 открытых функций унаследовано от QPaintDevice
Открытые слоты
| void | setValue(int val) |
- 4 открытых слота унаследовано от QAbstractSpinBox
- 19 открытых слотов унаследовано от QWidget
- 1 открытый слот унаследовано от QObject
Сигналы
| void | valueChanged(int i) |
| void | valueChanged(const QString &text) |
- 1 сигнал унаследован от QAbstractSpinBox
- 3 сигнала унаследовано от QWidget
- 2 сигнала унаследовано от QObject
Статические открытые члены
| const QMetaObject | staticMetaObject |
- 5 статических публичных членов, унаследованных от QWidget
- 9 статических публичных членов, унаследованных от QObject
Защищённые функции
| 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 |
- 20 защищённых функций, унаследованных от QAbstractSpinBox
- 35 защищённых функций, унаследованных от QWidget
- 9 защищённых функций, унаследованных от QObject
- 1 защищённая функция, унаследованная от QPaintDevice
Дополнительные унаследованные члены
- 1 защищённый слот, унаследованный от QWidget
Подробное описание
Класс QSpinBox предоставляет виджет спин-бокc.
QSpinBox предназначен для работы с целыми числами и дискретными наборами значений (например, названиями месяцев); для работы с числами с плавающей точкой используйте QDoubleSpinBox.
QSpinBox позволяет пользователю выбрать значение, нажав кнопки вверх/вниз или используя клавиши со стрелками вверх/вниз на клавиатуре для увеличения/уменьшения текущего значения. Пользователь также может ввести значение вручную. Спин-бокс поддерживает целые значения, но может быть расширен для использования различных строк с помощью validate(), textFromValue() и valueFromText().
Каждый раз при изменении значения QSpinBox излучает два сигнала valueChanged(), один с целым значением, а другой — со строковым. Перегрузка сигнала valueChanged() со строковым значением предоставляет значение с префиксом prefix() и суффиксом suffix(). Текущее значение можно получить с помощью value() и установить с помощью setValue().
Нажатие кнопок вверх/вниз или использование клавиш ускорителя вверх/вниз увеличивает или уменьшает текущее значение на величину singleStep(). Если вы хотите изменить это поведение, вы можете переопределить виртуальную функцию stepBy(). Минимальное и максимальное значение, а также шаг могут быть установлены с помощью одного из конструкторов и изменены позднее с помощью setMinimum(), setMaximum() и setSingleStep().
END_OF_DOCUMENT_MARKERБольшинство спинбоксов имеют направленное поведение, но 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);
} См. пример Icons для полного исходного кода.
См. также 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
Это свойство содержит минимальное значение спинбокса
При установке этого свойства maximum корректируется при необходимости, чтобы диапазон оставался допустимым.
Минимальное значение по умолчанию равно 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) |
| void | valueChanged(const QString &text) |
Документация по членам-функциям
QSpinBox::QSpinBox(QWidget *parent = nullptr)
Конструирует спинбокс с минимальным значением 0 и максимальным значением 99, значением шага 1. Значение изначально установлено в 0. Он является потомком parent.
См. также setMinimum(), setMaximum() и setSingleStep().
[virtual] QSpinBox::~QSpinBox()
Деструктор.
[override virtual protected] bool QSpinBox::event(QEvent *event)
Переопределено из QAbstractSpinBox::event().
[override virtual protected] void QSpinBox::fixup(QString &input) const
Переопределено из QAbstractSpinBox::fixup().
void QSpinBox::setRange(int minimum, int maximum)
Удобная функция для установки минимального и максимального значений с помощью одного вызова.
setRange(minimum, maximum);
эквивалентно:
setMinimum(minimum); setMaximum(maximum);
void QSpinBox::setStepType(QAbstractSpinBox::StepType stepType)
Устанавливает тип шага для спин-бокса на stepType, который представляет собой одиночный шаг или адаптивный десятичный шаг.
Адаптивный десятичный шаг означает, что размер шага будет постоянно корректироваться до одной степени десяти ниже текущего значения value. Таким образом, когда значение равно 1100, шаг устанавливается в 100, поэтому при увеличении значения на один шаг оно увеличивается до 1200. При значении 1200 увеличение значения на один шаг приводит к значению 1300. Для отрицательных значений, уменьшение на один шаг от -1100 переходит к -1200.
Направление шага учитывается для обработки граничных случаев, чтобы при уменьшении значения от 100 значение изменялось на 99, а не на 90. Таким образом, увеличение на один шаг, за которым следует уменьшение на один шаг (или наоборот), всегда возвращает исходное значение; 99 -> 100 -> 99.
Установление этого типа шага заставит спин-бокс игнорировать значение singleStep, хотя оно сохраняется, чтобы singleStep вступило в силу, если адаптивный десятичный шаг будет позже выключен.
Эта функция была добавлена в Qt 5.12.
Примечание: Метод-сеттер для свойства stepType.
См. также 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().
[signal] void QSpinBox::valueChanged(int i)
Этот сигнал излучается всякий раз, когда значение спин-бокса изменяется. Новое значение в виде целого числа передаётся в i.
Примечание: Сигнал valueChanged перегружен в этом классе. Для подключения к этому сигналу с помощью синтаксиса указателя на функцию Qt предоставляет удобную вспомогательную функцию, как показано в этом примере:
connect(spinBox, QOverload<int>::of(&QSpinBox::valueChanged),
[=](int i){ /* ... */ }); Примечание: Сигнал-уведомление для свойства value.
[signal] void QSpinBox::valueChanged(const QString &text)
Это перегруженная функция.
Новое значение передаётся в text с prefix() и suffix().
Примечание: Сигнал valueChanged перегружен в этом классе. Для подключения к этому сигналу с помощью синтаксиса указателя на функцию Qt предоставляет удобную вспомогательную функцию, как показано в этом примере:
connect(spinBox, QOverload<const QString &>::of(&QSpinBox::valueChanged),
[=](const QString &text){ /* ... */ }); Примечание: Сигнал-уведомление для свойства value.
[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.12/qspinbox.html