![]() |
Home · Overviews · Examples |
The QSpinBox class provides a spin box widget. More...
Inherits QAbstractSpinBox.
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. |
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.
Copyright © 2008 Trolltech | Trademarks | Qt Jambi 4.3.5_01 |