|  | Home · Overviews · Examples |

# QSpinBox Class Reference
[com.trolltech.qt.gui module]

The `QSpinBox` class provides a spin box widget. More...

Inherits `QAbstractSpinBox`.

## Detailed Description

The `QSpinBox` class provides a spin box widget.

`QSpinBox` is designed to handle integers and discrete sets of values (e.g., month names); use `QDoubleSpinBox` for floating point values.

`QSpinBox` allows the user to choose a value by clicking the up/down buttons or pressing up/down on the keyboard to increase/decrease the value currently displayed. The user can also type the value in manually. The spin box supports integer values but can be extended to use different strings with `validate`, `textFromValue` and `valueFromText`.

Every time the value changes `QSpinBox` emits the `valueChanged` signals. The current value can be fetched with `value` and set with `setValue`.

Clicking the up/down buttons or using the keyboard accelerator's up and down arrows will increase or decrease the current value in steps of size `singleStep`. If you want to change this behaviour you can reimplement the virtual function `stepBy`. The minimum and maximum value and the step size can be set using one of the constructors, and can be changed later with `setMinimum`, `setMaximum` and `setSingleStep`.

Most spin boxes are directional, but `QSpinBox` can also operate as a circular spin box, i.e. if the range is 0-99 and the current value is 99, clicking "up" will give 0 if `wrapping` is set to true. Use `setWrapping` if you want circular behavior.

The displayed value can be prepended and appended with arbitrary strings indicating, for example, currency or the unit of measurement. See `setPrefix` and `setSuffix`. The text in the spin box is retrieved with `text` (which includes any `prefix` and `suffix`), or with `cleanText` (which has no `prefix`, no `suffix` and no leading or trailing whitespace).

It is often desirable to give the user a special (often default) choice in addition to the range of numeric values. See `setSpecialValueText` for how to do this with `QSpinBox`.

| A spin box shown in the Windows XP widget style.
| A spin box shown in the Plastique widget style.
| A spin box shown in the Macintosh widget style.

### Subclassing QSpinBox

If using `prefix`, `suffix`, and `specialValueText` don't provide enough control, you subclass `QSpinBox` and reimplement `valueFromText` and `textFromValue`. For example, here's the code for a custom spin box that allows the user to enter icon sizes (e.g., "32 x 32"):

        int IconSizeSpinBox::valueFromText(const QString &text) const
        {
            QRegExp regExp(tr("(\\d+)(\\s*[xx]\\s*\\d+)?"));

            if (regExp.exactMatch(text)) {
                return regExp.cap(1).toInt();
            } else {
                return 0;
            }
        }

        QString IconSizeSpinBox::textFromValue(int value) const
        {
            return tr("%1 x %1").arg(value);
        }

See the Icons example for the full source code.

See also `QDoubleSpinBox`, `QDateTimeEdit`, `QSlider`, and Spin Boxes Example.