Класс QAbstractSpinBox
Класс QAbstractSpinBox предоставляет спинбокс и поле ввода строки для отображения значений. Подробнее...
| Заголовок: | #include <QAbstractSpinBox> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Наследует: | QWidget |
| Наследуется: |
Открытые типы
| Перечисление | ButtonSymbols { UpDownArrows, PlusMinus, НетКнопок } |
| Перечисление | CorrectionMode { ИсправлениеНаПредыдущееЗначение, ИсправлениеНаБлижайшееЗначение } |
| Флаги | StepEnabled |
| Перечисление | StepEnabledFlag { StepNone, StepUpEnabled, StepDownEnabled } |
| Перечисление | StepType { DefaultStepType, AdaptiveDecimalStepType } |
Свойства
|
|
Открытые функции
| QAbstractSpinBox(QWidget *parent = nullptr) | |
| virtual | ~QAbstractSpinBox() |
| Qt::Alignment | alignment() const |
| QAbstractSpinBox::ButtonSymbols | buttonSymbols() const |
| QAbstractSpinBox::CorrectionMode | correctionMode() const |
| virtual void | fixup(QString &input) const |
| bool | hasAcceptableInput() const |
| bool | hasFrame() const |
| void | interpretText() |
| bool | isAccelerated() const |
| bool | isGroupSeparatorShown() const |
| bool | isReadOnly() const |
| bool | keyboardTracking() const |
| void | setAccelerated(bool on) |
| void | setAlignment(Qt::Alignment flag) |
Переопределённые открытые функции
| virtual bool | event(QEvent *event) override |
Открытые слоты
| virtual void | clear() |
| void | selectAll() |
| void | stepDown() |
Сигналы
| void | editingFinished() |
Защищённые функции
| виртуальный void | initStyleOption(QStyleOptionSpinBox *option) const |
| QLineEdit * | lineEdit() const |
| void | setLineEdit(QLineEdit *lineEdit) |
| виртуальный QAbstractSpinBox::StepEnabled | stepEnabled() const |
Переопределённые защищённые функции
| виртуальный void | changeEvent(QEvent *event) override |
| виртуальный void | closeEvent(QCloseEvent *event) override |
| виртуальный void | contextMenuEvent(QContextMenuEvent *event) override |
| виртуальный void | focusInEvent(QFocusEvent *event) override |
| виртуальный void | focusOutEvent(QFocusEvent *event) override |
| виртуальный void | hideEvent(QHideEvent *event) override |
| виртуальный void | keyPressEvent(QKeyEvent *event) override |
| виртуальный void | keyReleaseEvent(QKeyEvent *event) override |
| виртуальный void | mouseMoveEvent(QMouseEvent *event) override |
| виртуальный void | mousePressEvent(QMouseEvent *event) override |
| виртуальный void | mouseReleaseEvent(QMouseEvent *event) override |
| виртуальный void | paintEvent(QPaintEvent *event) override |
| виртуальный void | resizeEvent(QResizeEvent *event) override |
| виртуальный void | showEvent(QShowEvent *event) override |
| виртуальный void | timerEvent(QTimerEvent *event) override |
| виртуальный void | wheelEvent(QWheelEvent *event) override |
Подробное описание
Класс разработан как общий базовый класс для виджетов, таких как QSpinBox, QDoubleSpinBox и QDateTimeEdit
Вот основные свойства класса:
- text: Текст, отображаемый в QAbstractSpinBox.
- alignment: Выравнивание текста в QAbstractSpinBox.
- wrapping: Указывает, происходит ли перенос значений QAbstractSpinBox от минимального к максимальному значению и обратно.
QAbstractSpinBox предоставляет виртуальную функцию stepBy(), которая вызывается всякий раз, когда пользователь инициирует шаг. Эта функция принимает целое значение, обозначающее, сколько шагов было сделано. Например, нажатие Qt::Key_Down вызовет stepBy(-1).
Если пользователь инициирует шаг, удерживая клавишу Qt::ControlModifier, QAbstractSpinBox делает шаги размером в 10 вместо одного. Этот модификатор шага влияет на события прокрутки, события нажатия клавиш и взаимодействие с кнопками спинбокса. Обратите внимание, что на macOS клавиша Control соответствует клавише Command.
Начиная с Qt 5.12, QStyle::SH_SpinBox_StepModifier может использоваться для выбора Qt::KeyboardModifier, увеличивающего размер шага. Qt::NoModifier отключает эту функцию.
QAbstractSpinBox также предоставляет виртуальную функцию stepEnabled(), определяющую, разрешено ли выполнение шагов вверх/вниз в любой момент. Эта функция возвращает битовую комбинацию значений StepEnabled.
См. также QAbstractSlider, QSpinBox, QDoubleSpinBox, QDateTimeEdit и Пример Spin Box.
Документация по типам членов
перечисление QAbstractSpinBox::ButtonSymbols
Это тип перечисления, описывающий символы, которые могут отображаться на кнопках в спинбоксе.
| Постоянная | Значение | Описание |
|---|---|---|
QAbstractSpinBox::UpDownArrows |
0 |
Маленькие стрелки в классическом стиле. |
QAbstractSpinBox::PlusMinus |
1 |
Символы + и -. |
QAbstractSpinBox::NoButtons |
2 |
Кнопки не отображаются. |
См. также QAbstractSpinBox::buttonSymbols.
перечисление QAbstractSpinBox::CorrectionMode
Этот тип перечисления описывает режим, используемый спинбоксом для исправления значения Intermediate, если редактирование завершено.
| Постоянная | Значение | Описание |
|---|---|---|
QAbstractSpinBox::CorrectToPreviousValue |
0 |
Спинбокс вернётся к последнему допустимому значению. |
QAbstractSpinBox::CorrectToNearestValue |
1 |
Спинбокс вернётся к ближайшему допустимому значению. |
См. также correctionMode.
перечисление QAbstractSpinBox::StepEnabledFlagфлаги QAbstractSpinBox::StepEnabled
| Постоянная | Значение |
|---|---|
QAbstractSpinBox::StepNone |
0x00 |
QAbstractSpinBox::StepUpEnabled |
0x01 |
QAbstractSpinBox::StepDownEnabled |
0x02 |
Тип StepEnabled — это typedef для QFlags<StepEnabledFlag>. Он хранит побитовую комбинацию значений StepEnabledFlag.
перечисление QAbstractSpinBox::StepType
| Постоянная | Значение |
|---|---|
QAbstractSpinBox::DefaultStepType |
0 |
QAbstractSpinBox::AdaptiveDecimalStepType |
1 |
Документация свойств
accelerated : bool
Это свойство определяет, будет ли спин-бокс ускорять частоту шагов при нажатии кнопок увеличения/уменьшения.
При включенном значении спин-бокс будет увеличивать/уменьшать значение быстрее, чем дольше кнопка удерживается нажатой.
Функции доступа:
| bool | isAccelerated() const |
| void | setAccelerated(bool on) |
[read-only] acceptableInput : const bool
Это свойство указывает, удовлетворяет ли ввод текущей валидации.
Функции доступа:
| bool | hasAcceptableInput() const |
См. также validate(), fixup() и correctionMode.
alignment : Qt::Alignment
Это свойство определяет выравнивание спин-бокса.
Возможные значения — Qt::AlignLeft, Qt::AlignRight и Qt::AlignHCenter.
По умолчанию выравнивание — Qt::AlignLeft.
Попытка установить выравнивание с недопустимой комбинацией флагов не приводит к действиям.
Функции доступа:
| Qt::Alignment | alignment() const |
| void | setAlignment(Qt::Alignment flag) |
См. также Qt::Alignment.
buttonSymbols : ButtonSymbols
Это свойство определяет текущий режим символов кнопок.
Возможные значения могут быть UpDownArrows или PlusMinus. По умолчанию используется UpDownArrows.
Обратите внимание, что некоторые стили могут одинаково отображать PlusMinus и UpDownArrows.
Функции доступа:
| QAbstractSpinBox::ButtonSymbols | buttonSymbols() const |
| void | setButtonSymbols(QAbstractSpinBox::ButtonSymbols bs) |
См. также ButtonSymbols.
correctionMode : CorrectionMode
Это свойство определяет режим коррекции значения Intermediate, если редактирование завершено.
По умолчанию используется режим QAbstractSpinBox::CorrectToPreviousValue.
Функции доступа:
| QAbstractSpinBox::CorrectionMode | correctionMode() const |
| void | setCorrectionMode(QAbstractSpinBox::CorrectionMode cm) |
См. также acceptableInput, validate() и fixup().
frame : bool
Это свойство указывает, рисует ли спин-бокс рамку.
Если свойство включено (по умолчанию), спин-бокс рисуется в рамке, в противном случае без рамки.
Функции доступа:
| bool | hasFrame() const |
| void | setFrame(bool) |
keyboardTracking : bool
Это свойство указывает, включен ли контроль ввода с клавиатуры для спин-бокса.
Если контроль ввода с клавиатуры включен (по умолчанию), спин-бокс излучает сигналы valueChanged() и textChanged() во время ввода нового значения с клавиатуры.
Например, при вводе значения 600 нажатием клавиш 6, 0 и 0, спин-бокс излучает 3 сигнала со значениями 6, 60 и 600 соответственно.
Если контроль ввода с клавиатуры отключен, спин-бокс не излучает сигналы valueChanged() и textChanged() во время ввода. Он излучает эти сигналы позже, при нажатии клавиши Enter, при потере фокуса клавиатуры или при использовании других функций спин-бокса, например, при нажатии клавиши со стрелкой.
Функции доступа:
| bool | keyboardTracking() const |
| void | setKeyboardTracking(bool kt) |
readOnly : bool
Это свойство определяет, является ли спин-бокс только для чтения.
В режиме только для чтения пользователь всё ещё может скопировать текст в буфер обмена или перетащить текст, но не может его изменить.
В QLineEdit в QAbstractSpinBox не отображается курсор в режиме только для чтения.
Функции доступа:
| bool | isReadOnly() const |
| void | setReadOnly(bool r) |
См. также QLineEdit::readOnly.
[since 5.3] showGroupSeparator : bool
Это свойство определяет, включен ли разделитель тысяч. По умолчанию это свойство имеет значение false.
Это свойство было добавлено в Qt 5.3.
Функции доступа:
| bool | isGroupSeparatorShown() const |
| void | setGroupSeparatorShown(bool shown) |
specialValueText : QString
Это свойство содержит текст специального значения.
Если свойство задано, спин-бокс будет отображать этот текст вместо числового значения всякий раз, когда текущее значение равно minimum(). Обычно это используется для обозначения того, что данный выбор имеет специальное (по умолчанию) значение.
Например, если ваш спин-бокс позволяет пользователю выбрать масштаб (или уровень масштабирования) для отображения изображения, и ваше приложение способно автоматически выбрать такой, который позволит изображению полностью уместиться в окне отображения, вы можете настроить спин-бокс так:
QSpinBox *zoomSpinBox = new QSpinBox;
zoomSpinBox->setRange(0, 1000);
zoomSpinBox->setSingleStep(10);
zoomSpinBox->setSuffix("%");
zoomSpinBox->setSpecialValueText(tr("Automatic"));
zoomSpinBox->setValue(100); Тогда пользователь сможет выбрать масштаб от 1% до 1000% или выбрать «Авто», чтобы приложение выбирало масштаб автоматически. Ваш код должен затем интерпретировать значение спин-бокса 0 как запрос от пользователя для масштабирования изображения для помещения в окно.
Все значения отображаются с префиксом и суффиксом (если они установлены), *кроме* специального значения, которое отображает только текст специального значения. Этот специальный текст передаётся в сигнале QSpinBox::textChanged(), который передаёт QString.
Чтобы отключить отображение текста специального значения, вызовите эту функцию со строкой-пустышкой. По умолчанию текст специального значения не установлен, т.е. отображается обычное числовое значение.
Если текст специального значения не установлен, specialValueText() возвращает пустую строку.
Функции доступа:
| QString | specialValueText() const |
| void | setSpecialValueText(const QString &txt) |
[read-only] text : const QString
Это свойство содержит текст спин-бокса, включая любой префикс и суффикс.
Текста по умолчанию нет.
Функции доступа:
| QString | text() const |
wrapping : bool
Это свойство указывает, является ли спин-бокс циклическим.
Если циклический режим включён, перемещение вверх от максимального значения переходит к минимальному значению и наоборот. Циклический режим имеет смысл только если установлены минимальное и максимальное значения.
QSpinBox *spinBox = new QSpinBox(this); spinBox->setRange(0, 100); spinBox->setWrapping(true); spinBox->setValue(100); spinBox->stepBy(1); // value is 0
Функции доступа:
| bool | wrapping() const |
| void | setWrapping(bool w) |
См. также QSpinBox::minimum() и QSpinBox::maximum().
Документация функций-членов
QAbstractSpinBox::QAbstractSpinBox(QWidget *parent = nullptr)
Создаёт абстрактный спинбокс с заданным родительским элементом с параметрами оборачивания и выравнивания по умолчанию.
[virtual slot] void QAbstractSpinBox::clear()
Очищает поле ввода от всего текста, кроме префикса и суффикса.
[signal] void QAbstractSpinBox::editingFinished()
Этот сигнал испускается после завершения редактирования. Это происходит, когда спинбокс теряет фокус или нажимается Enter.
[slot] void QAbstractSpinBox::selectAll()
Выделяет весь текст в спинбоксе, за исключением префикса и суффикса.
[slot] void QAbstractSpinBox::stepDown()
Уменьшает значение на один шаг. Вызов этого слота аналогичен вызову stepBy(-1);
См. также stepBy() и stepUp().
[slot] void QAbstractSpinBox::stepUp()
Увеличивает значение на один шаг. Вызов этого слота аналогичен вызову stepBy(1);
См. также stepBy() и stepDown().
[virtual] QAbstractSpinBox::~QAbstractSpinBox()
Вызывается при уничтожении объекта QAbstractSpinBox.
[override virtual protected] void QAbstractSpinBox::changeEvent(QEvent *event)
Переопределяет: QWidget::changeEvent(QEvent *event).
[override virtual protected] void QAbstractSpinBox::closeEvent(QCloseEvent *event)
Переопределяет: QWidget::closeEvent(QCloseEvent *event).
[override virtual protected] void QAbstractSpinBox::contextMenuEvent(QContextMenuEvent *event)
Переопределяет: QWidget::contextMenuEvent(QContextMenuEvent *event).
[override virtual] bool QAbstractSpinBox::event(QEvent *event)
Переопределяет: QWidget::event(QEvent *event).
[virtual] void QAbstractSpinBox::fixup(QString &input) const
Этот виртуальный метод вызывается QAbstractSpinBox, если input не прошла валидацию на QValidator::Acceptable при нажатии Enter или при вызове interpretText(). Он попытается изменить текст, чтобы он стал допустимым. Переопределяется в различных подклассах.
[override virtual protected] void QAbstractSpinBox::focusInEvent(QFocusEvent *event)
Переопределяет: QWidget::focusInEvent(QFocusEvent *event).
[override virtual protected] void QAbstractSpinBox::focusOutEvent(QFocusEvent *event)
Переопределяет: QWidget::focusOutEvent(QFocusEvent *event).
[override virtual protected] void QAbstractSpinBox::hideEvent(QHideEvent *event)
Переопределяет: QWidget::hideEvent(QHideEvent *event).
[virtual protected] void QAbstractSpinBox::initStyleOption(QStyleOptionSpinBox *option) const
Инициализирует option значениями из этого QSpinBox. Этот метод полезен для подклассов, когда им нужен QStyleOptionSpinBox, но они не хотят сами заполнять всю информацию.
См. также QStyleOption::initFrom().
[override virtual] QVariant QAbstractSpinBox::inputMethodQuery(Qt::InputMethodQuery query) const
Переопределяет: QWidget::inputMethodQuery(Qt::InputMethodQuery query) const.
void QAbstractSpinBox::interpretText()
Этот метод интерпретирует текст спинбокса. Если значение изменилось с момента последней интерпретации, будут испущены сигналы.
[override virtual protected] void QAbstractSpinBox::keyPressEvent(QKeyEvent *event)
Переопределяет: QWidget::keyPressEvent(QKeyEvent *event).
Этот метод обрабатывает ввод с клавиатуры.
Ниже перечислены клавиши, которые обрабатываются специфически:
| Enter/Return | Это переинтерпретирует текст и испускает сигнал, даже если значение не изменилось с момента последнего испускания сигнала. |
| Up | Это вызовет stepBy(1) |
| Down | Это вызовет stepBy(-1) |
| Page up | Это вызовет stepBy(10) |
| Page down | Это вызовет stepBy(-10) |
См. также stepBy().
[override virtual protected] void QAbstractSpinBox::keyReleaseEvent(QKeyEvent *event)
Переопределяет: QWidget::keyReleaseEvent(QKeyEvent *event).
[protected] QLineEdit *QAbstractSpinBox::lineEdit() const
Этот метод возвращает указатель на поле ввода спинбокса.
См. также setLineEdit().
[override virtual] QSize QAbstractSpinBox::minimumSizeHint() const
Переопределяет функцию доступа к свойству: QWidget::minimumSizeHint.
[override virtual protected] void QAbstractSpinBox::mouseMoveEvent(QMouseEvent *event)
Переопределяет: QWidget::mouseMoveEvent(QMouseEvent *event).
[override virtual protected] void QAbstractSpinBox::mousePressEvent(QMouseEvent *event)
Переопределяет: QWidget::mousePressEvent(QMouseEvent *event).
[override virtual protected] void QAbstractSpinBox::mouseReleaseEvent(QMouseEvent *event)
Переопределяет: QWidget::mouseReleaseEvent(QMouseEvent *event).
[override virtual protected] void QAbstractSpinBox::paintEvent(QPaintEvent *event)
Переопределяет: QWidget::paintEvent(QPaintEvent *event).
[override virtual protected] void QAbstractSpinBox::resizeEvent(QResizeEvent *event)
Переопределяет: QWidget::resizeEvent(QResizeEvent *event).
[protected] void QAbstractSpinBox::setLineEdit(QLineEdit *lineEdit)
Устанавливает поле ввода спинбокса в lineEdit вместо текущего виджета поля ввода. lineEdit не может быть nullptr.
QAbstractSpinBox берёт на себя владение новым lineEdit.
Если QLineEdit::validator() для lineEdit возвращает nullptr, внутренний валидатор спинбокса будет установлен на поле ввода.
См. также lineEdit().
[override virtual protected] void QAbstractSpinBox::showEvent(QShowEvent *event)
Переопределяет: QWidget::showEvent(QShowEvent *event).
[override virtual] QSize QAbstractSpinBox::sizeHint() const
Переопределяет функцию доступа к свойству: QWidget::sizeHint.
[virtual] void QAbstractSpinBox::stepBy(int steps)
Виртуальный метод, вызываемый всякий раз, когда пользователь выполняет шаг. Параметр steps указывает, сколько шагов было сделано. Например, нажатие Qt::Key_Down вызовет вызов stepBy(-1), а нажатие Qt::Key_PageUp вызовет вызов stepBy(10).
Если вы создаете подкласс QAbstractSpinBox, вы должны переопределить эту функцию. Обратите внимание, что эта функция вызывается даже если результирующее значение окажется вне границ минимального и максимального значений. Именно эта функция должна обрабатывать такие ситуации.
См. также stepUp(), stepDown() и keyPressEvent().
[virtual protected] QAbstractSpinBox::StepEnabled QAbstractSpinBox::stepEnabled() const
Виртуальная функция, определяющая, разрешено ли увеличение и уменьшение значения в данный момент.
Стрелка вверх будет отображаться как отключенная, если (stepEnabled() & StepUpEnabled) != 0.
В реализации по умолчанию будет возвращаться (StepUpEnabled| StepDownEnabled), если включено переполнение. В противном случае будет возвращаться StepDownEnabled, если значение больше minimum(), или StepUpEnabled, если значение меньше maximum().
Если вы создаете подкласс QAbstractSpinBox, вам потребуется переопределить эту функцию.
См. также QSpinBox::minimum(), QSpinBox::maximum() и wrapping().
[override virtual protected] void QAbstractSpinBox::timerEvent(QTimerEvent *event)
Переопределяет: QObject::timerEvent(QTimerEvent *event).
[virtual] QValidator::State QAbstractSpinBox::validate(QString &input, int &pos) const
Эта виртуальная функция вызывается QAbstractSpinBox для определения, является ли input допустимым. Параметр pos указывает позицию в строке. Переопределяется в различных подклассах.
[override virtual protected] void QAbstractSpinBox::wheelEvent(QWheelEvent *event)
Переопределяет: QWidget::wheelEvent(QWheelEvent *event).
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qabstractspinbox.html