QAbstractSpinBox Class
The QAbstractSpinBox class provides a spinbox and a line edit to display values. More...
Header: | #include <QAbstractSpinBox> |
qmake: | QT += widgets |
Inherits: | QWidget |
Inherited By: |
Public Types
enum | ButtonSymbols { UpDownArrows, PlusMinus, NoButtons } |
enum | CorrectionMode { CorrectToPreviousValue, CorrectToNearestValue } |
flags | StepEnabled |
enum | StepEnabledFlag { StepNone, StepUpEnabled, StepDownEnabled } |
enum | StepType { DefaultStepType, AdaptiveDecimalStepType } |
Properties
|
|
Public Functions
QAbstractSpinBox(QWidget *parent = nullptr) | |
virtual | ~QAbstractSpinBox() |
Qt::Alignment | alignment() const |
ButtonSymbols | buttonSymbols() const |
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) |
void | setButtonSymbols(ButtonSymbols bs) |
void | setCorrectionMode(CorrectionMode cm) |
void | setFrame(bool) |
void | setGroupSeparatorShown(bool shown) |
void | setKeyboardTracking(bool kt) |
void | setReadOnly(bool r) |
void | setSpecialValueText(const QString &txt) |
void | setWrapping(bool w) |
QString | specialValueText() const |
virtual void | stepBy(int steps) |
QString | text() const |
virtual QValidator::State | validate(QString &input, int &pos) const |
bool | wrapping() const |
Reimplemented Public Functions
virtual bool | event(QEvent *event) override |
virtual QVariant | inputMethodQuery(Qt::InputMethodQuery query) const override |
virtual QSize | minimumSizeHint() const override |
virtual QSize | sizeHint() const override |
Public Slots
Signals
void | editingFinished() |
Protected Functions
void | initStyleOption(QStyleOptionSpinBox *option) const |
QLineEdit * | lineEdit() const |
void | setLineEdit(QLineEdit *lineEdit) |
virtual StepEnabled | stepEnabled() const |
Reimplemented Protected Functions
virtual void | changeEvent(QEvent *event) override |
virtual void | closeEvent(QCloseEvent *event) override |
virtual void | contextMenuEvent(QContextMenuEvent *event) override |
virtual void | focusInEvent(QFocusEvent *event) override |
virtual void | focusOutEvent(QFocusEvent *event) override |
virtual void | hideEvent(QHideEvent *event) override |
virtual void | keyPressEvent(QKeyEvent *event) override |
virtual void | keyReleaseEvent(QKeyEvent *event) override |
virtual void | mouseMoveEvent(QMouseEvent *event) override |
virtual void | mousePressEvent(QMouseEvent *event) override |
virtual void | mouseReleaseEvent(QMouseEvent *event) override |
virtual void | paintEvent(QPaintEvent *event) override |
virtual void | resizeEvent(QResizeEvent *event) override |
virtual void | showEvent(QShowEvent *event) override |
virtual void | timerEvent(QTimerEvent *event) override |
virtual void | wheelEvent(QWheelEvent *event) override |
Detailed Description
The class is designed as a common super class for widgets like QSpinBox, QDoubleSpinBox and QDateTimeEdit
Here are the main properties of the class:
- text: The text that is displayed in the QAbstractSpinBox.
- alignment: The alignment of the text in the QAbstractSpinBox.
- wrapping: Whether the QAbstractSpinBox wraps from the minimum value to the maximum value and vice versa.
QAbstractSpinBox provides a virtual stepBy() function that is called whenever the user triggers a step. This function takes an integer value to signify how many steps were taken. E.g. Pressing Qt::Key_Down will trigger a call to stepBy(-1).
When the user triggers a step whilst holding the Qt::ControlModifier, QAbstractSpinBox steps by 10 instead of making a single step. This step modifier affects wheel events, key events and interaction with the spinbox buttons. Note that on macOS, Control corresponds to the Command key.
Since Qt 5.12, QStyle::SH_SpinBox_StepModifier can be used to select which Qt::KeyboardModifier increases the step rate. Qt::NoModifier disables this feature.
QAbstractSpinBox also provide a virtual function stepEnabled() to determine whether stepping up/down is allowed at any point. This function returns a bitset of StepEnabled.
See also QAbstractSlider, QSpinBox, QDoubleSpinBox, QDateTimeEdit, and Spin Boxes Example.
Member Type Documentation
enum QAbstractSpinBox::ButtonSymbols
This enum type describes the symbols that can be displayed on the buttons in a spin box.
Constant | Value | Description |
---|---|---|
QAbstractSpinBox::UpDownArrows | 0 | Little arrows in the classic style. |
QAbstractSpinBox::PlusMinus | 1 | + and - symbols. |
QAbstractSpinBox::NoButtons | 2 | Don't display buttons. |
See also QAbstractSpinBox::buttonSymbols.
enum QAbstractSpinBox::CorrectionMode
This enum type describes the mode the spinbox will use to correct an Intermediate value if editing finishes.
Constant | Value | Description |
---|---|---|
QAbstractSpinBox::CorrectToPreviousValue | 0 | The spinbox will revert to the last valid value. |
QAbstractSpinBox::CorrectToNearestValue | 1 | The spinbox will revert to the nearest valid value. |
See also correctionMode.
enum QAbstractSpinBox::StepEnabledFlag
flags QAbstractSpinBox::StepEnabled
Constant | Value |
---|---|
QAbstractSpinBox::StepNone | 0x00 |
QAbstractSpinBox::StepUpEnabled | 0x01 |
QAbstractSpinBox::StepDownEnabled | 0x02 |
The StepEnabled type is a typedef for QFlags<StepEnabledFlag>. It stores an OR combination of StepEnabledFlag values.
enum QAbstractSpinBox::StepType
Constant | Value |
---|---|
QAbstractSpinBox::DefaultStepType | 0 |
QAbstractSpinBox::AdaptiveDecimalStepType | 1 |
Property Documentation
accelerated : bool
This property holds whether the spin box will accelerate the frequency of the steps when pressing the step Up/Down buttons.
If enabled the spin box will increase/decrease the value faster the longer you hold the button down.
This property was introduced in Qt 4.2.
Access functions:
bool | isAccelerated() const |
void | setAccelerated(bool on) |
acceptableInput : const bool
This property holds whether the input satisfies the current validation
This property was introduced in Qt 4.2.
Access functions:
bool | hasAcceptableInput() const |
See also validate(), fixup(), and correctionMode.
alignment : Qt::Alignment
This property holds the alignment of the spin box
Possible Values are Qt::AlignLeft, Qt::AlignRight, and Qt::AlignHCenter.
By default, the alignment is Qt::AlignLeft
Attempting to set the alignment to an illegal flag combination does nothing.
Access functions:
Qt::Alignment | alignment() const |
void | setAlignment(Qt::Alignment flag) |
See also Qt::Alignment.
buttonSymbols : ButtonSymbols
This property holds the current button symbol mode
The possible values can be either UpDownArrows
or PlusMinus
. The default is UpDownArrows
.
Note that some styles might render PlusMinus and UpDownArrows identically.
Access functions:
ButtonSymbols | buttonSymbols() const |
void | setButtonSymbols(ButtonSymbols bs) |
See also ButtonSymbols.
correctionMode : CorrectionMode
This property holds the mode to correct an Intermediate value if editing finishes
The default mode is QAbstractSpinBox::CorrectToPreviousValue.
This property was introduced in Qt 4.2.
Access functions:
CorrectionMode | correctionMode() const |
void | setCorrectionMode(CorrectionMode cm) |
See also acceptableInput, validate(), and fixup().
frame : bool
This property holds whether the spin box draws itself with a frame
If enabled (the default) the spin box draws itself inside a frame, otherwise the spin box draws itself without any frame.
Access functions:
bool | hasFrame() const |
void | setFrame(bool) |
keyboardTracking : bool
This property holds whether keyboard tracking is enabled for the spinbox.
If keyboard tracking is enabled (the default), the spinbox emits the valueChanged() and textChanged() signals while the new value is being entered from the keyboard.
E.g. when the user enters the value 600 by typing 6, 0, and 0, the spinbox emits 3 signals with the values 6, 60, and 600 respectively.
If keyboard tracking is disabled, the spinbox doesn't emit the valueChanged() and textChanged() signals while typing. It emits the signals later, when the return key is pressed, when keyboard focus is lost, or when other spinbox functionality is used, e.g. pressing an arrow key.
This property was introduced in Qt 4.3.
Access functions:
bool | keyboardTracking() const |
void | setKeyboardTracking(bool kt) |
readOnly : bool
This property holds whether the spin box is read only.
In read-only mode, the user can still copy the text to the clipboard, or drag and drop the text; but cannot edit it.
The QLineEdit in the QAbstractSpinBox does not show a cursor in read-only mode.
Access functions:
bool | isReadOnly() const |
void | setReadOnly(bool r) |
See also QLineEdit::readOnly.
showGroupSeparator : bool
This property holds whether a thousands separator is enabled. By default this property is false.
This property was introduced in Qt 5.3.
Access functions:
bool | isGroupSeparatorShown() const |
void | setGroupSeparatorShown(bool shown) |
specialValueText : QString
This property holds the special-value text
If set, the spin box will display this text instead of a numeric value whenever the current value is equal to minimum(). Typical use is to indicate that this choice has a special (default) meaning.
For example, if your spin box allows the user to choose a scale factor (or zoom level) for displaying an image, and your application is able to automatically choose one that will enable the image to fit completely within the display window, you can set up the spin box like this:
QSpinBox *zoomSpinBox = new QSpinBox; zoomSpinBox->setRange(0, 1000); zoomSpinBox->setSingleStep(10); zoomSpinBox->setSuffix("%"); zoomSpinBox->setSpecialValueText(tr("Automatic")); zoomSpinBox->setValue(100);
The user will then be able to choose a scale from 1% to 1000% or select "Auto" to leave it up to the application to choose. Your code must then interpret the spin box value of 0 as a request from the user to scale the image to fit inside the window.
All values are displayed with the prefix and suffix (if set), except for the special value, which only shows the special value text. This special text is passed in the QSpinBox::textChanged() signal that passes a QString.
To turn off the special-value text display, call this function with an empty string. The default is no special-value text, i.e. the numeric value is shown as usual.
If no special-value text is set, specialValueText() returns an empty string.
Access functions:
QString | specialValueText() const |
void | setSpecialValueText(const QString &txt) |
text : const QString
This property holds the spin box's text, including any prefix and suffix
There is no default text.
Access functions:
QString | text() const |
wrapping : bool
This property holds whether the spin box is circular.
If wrapping is true stepping up from maximum() value will take you to the minimum() value and vice versa. Wrapping only make sense if you have minimum() and maximum() values set.
QSpinBox *spinBox = new QSpinBox(this); spinBox->setRange(0, 100); spinBox->setWrapping(true); spinBox->setValue(100); spinBox->stepBy(1); // value is 0
Access functions:
bool | wrapping() const |
void | setWrapping(bool w) |
See also QSpinBox::minimum() and QSpinBox::maximum().
Member Function Documentation
QAbstractSpinBox::QAbstractSpinBox(QWidget *parent = nullptr)
Constructs an abstract spinbox with the given parent with default wrapping, and alignment properties.
[virtual slot]
void QAbstractSpinBox::clear()
Clears the lineedit of all text but prefix and suffix.
[signal]
void QAbstractSpinBox::editingFinished()
This signal is emitted editing is finished. This happens when the spinbox loses focus and when enter is pressed.
[slot]
void QAbstractSpinBox::selectAll()
Selects all the text in the spinbox except the prefix and suffix.
[slot]
void QAbstractSpinBox::stepDown()
Steps down by one linestep Calling this slot is analogous to calling stepBy(-1);
See also stepBy() and stepUp().
[slot]
void QAbstractSpinBox::stepUp()
Steps up by one linestep Calling this slot is analogous to calling stepBy(1);
See also stepBy() and stepDown().
[virtual]
QAbstractSpinBox::~QAbstractSpinBox()
Called when the QAbstractSpinBox is destroyed.
[override virtual protected]
void QAbstractSpinBox::changeEvent(QEvent *event)
Reimplements: QWidget::changeEvent(QEvent *event).
[override virtual protected]
void QAbstractSpinBox::closeEvent(QCloseEvent *event)
Reimplements: QWidget::closeEvent(QCloseEvent *event).
[override virtual protected]
void QAbstractSpinBox::contextMenuEvent(QContextMenuEvent *event)
Reimplements: QWidget::contextMenuEvent(QContextMenuEvent *event).
[override virtual]
bool QAbstractSpinBox::event(QEvent *event)
Reimplements: QWidget::event(QEvent *event).
[virtual]
void QAbstractSpinBox::fixup(QString &input) const
This virtual function is called by the QAbstractSpinBox if the input is not validated to QValidator::Acceptable when Return is pressed or interpretText() is called. It will try to change the text so it is valid. Reimplemented in the various subclasses.
[override virtual protected]
void QAbstractSpinBox::focusInEvent(QFocusEvent *event)
Reimplements: QWidget::focusInEvent(QFocusEvent *event).
[override virtual protected]
void QAbstractSpinBox::focusOutEvent(QFocusEvent *event)
Reimplements: QWidget::focusOutEvent(QFocusEvent *event).
[override virtual protected]
void QAbstractSpinBox::hideEvent(QHideEvent *event)
Reimplements: QWidget::hideEvent(QHideEvent *event).
[protected]
void QAbstractSpinBox::initStyleOption(QStyleOptionSpinBox *option) const
Initialize option with the values from this QSpinBox. This method is useful for subclasses when they need a QStyleOptionSpinBox, but don't want to fill in all the information themselves.
See also QStyleOption::initFrom().
[override virtual]
QVariant QAbstractSpinBox::inputMethodQuery(Qt::InputMethodQuery query) const
Reimplements: QWidget::inputMethodQuery(Qt::InputMethodQuery query) const.
void QAbstractSpinBox::interpretText()
This function interprets the text of the spin box. If the value has changed since last interpretation it will emit signals.
[override virtual protected]
void QAbstractSpinBox::keyPressEvent(QKeyEvent *event)
Reimplements: QWidget::keyPressEvent(QKeyEvent *event).
This function handles keyboard input.
The following keys are handled specifically:
Enter/Return | This will reinterpret the text and emit a signal even if the value has not changed since last time a signal was emitted. |
Up | This will invoke stepBy(1) |
Down | This will invoke stepBy(-1) |
Page up | This will invoke stepBy(10) |
Page down | This will invoke stepBy(-10) |
See also stepBy().
[override virtual protected]
void QAbstractSpinBox::keyReleaseEvent(QKeyEvent *event)
Reimplements: QWidget::keyReleaseEvent(QKeyEvent *event).
[protected]
QLineEdit *QAbstractSpinBox::lineEdit() const
This function returns a pointer to the line edit of the spin box.
See also setLineEdit().
[override virtual]
QSize QAbstractSpinBox::minimumSizeHint() const
Reimplements an access function for property: QWidget::minimumSizeHint.
[override virtual protected]
void QAbstractSpinBox::mouseMoveEvent(QMouseEvent *event)
Reimplements: QWidget::mouseMoveEvent(QMouseEvent *event).
[override virtual protected]
void QAbstractSpinBox::mousePressEvent(QMouseEvent *event)
Reimplements: QWidget::mousePressEvent(QMouseEvent *event).
[override virtual protected]
void QAbstractSpinBox::mouseReleaseEvent(QMouseEvent *event)
Reimplements: QWidget::mouseReleaseEvent(QMouseEvent *event).
[override virtual protected]
void QAbstractSpinBox::paintEvent(QPaintEvent *event)
Reimplements: QWidget::paintEvent(QPaintEvent *event).
[override virtual protected]
void QAbstractSpinBox::resizeEvent(QResizeEvent *event)
Reimplements: QWidget::resizeEvent(QResizeEvent *event).
[protected]
void QAbstractSpinBox::setLineEdit(QLineEdit *lineEdit)
Sets the line edit of the spinbox to be lineEdit instead of the current line edit widget. lineEdit cannot be nullptr
.
QAbstractSpinBox takes ownership of the new lineEdit
If QLineEdit::validator() for the lineEdit returns nullptr
, the internal validator of the spinbox will be set on the line edit.
See also lineEdit().
[override virtual protected]
void QAbstractSpinBox::showEvent(QShowEvent *event)
Reimplements: QWidget::showEvent(QShowEvent *event).
[override virtual]
QSize QAbstractSpinBox::sizeHint() const
Reimplements an access function for property: QWidget::sizeHint.
[virtual]
void QAbstractSpinBox::stepBy(int steps)
Virtual function that is called whenever the user triggers a step. The steps parameter indicates how many steps were taken. For example, pressing Qt::Key_Down
will trigger a call to stepBy(-1)
, whereas pressing Qt::Key_PageUp
will trigger a call to stepBy(10)
.
If you subclass QAbstractSpinBox
you must reimplement this function. Note that this function is called even if the resulting value will be outside the bounds of minimum and maximum. It's this function's job to handle these situations.
See also stepUp(), stepDown(), and keyPressEvent().
[virtual protected]
StepEnabled QAbstractSpinBox::stepEnabled() const
Virtual function that determines whether stepping up and down is legal at any given time.
The up arrow will be painted as disabled unless (stepEnabled() & StepUpEnabled) != 0.
The default implementation will return (StepUpEnabled| StepDownEnabled) if wrapping is turned on. Else it will return StepDownEnabled if value is > minimum() or'ed with StepUpEnabled if value < maximum().
If you subclass QAbstractSpinBox you will need to reimplement this function.
See also QSpinBox::minimum(), QSpinBox::maximum(), and wrapping().
[override virtual protected]
void QAbstractSpinBox::timerEvent(QTimerEvent *event)
Reimplements: QObject::timerEvent(QTimerEvent *event).
[virtual]
QValidator::State QAbstractSpinBox::validate(QString &input, int &pos) const
This virtual function is called by the QAbstractSpinBox to determine whether input is valid. The pos parameter indicates the position in the string. Reimplemented in the various subclasses.
[override virtual protected]
void QAbstractSpinBox::wheelEvent(QWheelEvent *event)
Reimplements: QWidget::wheelEvent(QWheelEvent *event).