En esta página

QSpinBox Class

La clase QSpinBox proporciona un widget de caja giratoria. Más...

Cabecera: #include <QSpinBox>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Hereda: QAbstractSpinBox

Propiedades

Funciones públicas

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

Ranuras públicas

void setValue(int val)

Señales

void textChanged(const QString &text)
void valueChanged(int i)

Funciones protegidas

virtual QString textFromValue(int value) const
virtual int valueFromText(const QString &text) const

Funciones protegidas reimplementadas

virtual bool event(QEvent *event) override
virtual void fixup(QString &input) const override
virtual QValidator::State validate(QString &text, int &pos) const override

Descripción Detallada

Widget de caja giratoria que muestra un número entero

QSpinBox está diseñado para manejar enteros y conjuntos discretos de valores (por ejemplo, nombres de meses); utilice QDoubleSpinBox para valores de coma flotante.

QSpinBox permite al usuario elegir un valor haciendo clic en los botones arriba/abajo o pulsando arriba/abajo en el teclado para aumentar/disminuir el valor mostrado actualmente. El usuario también puede introducir el valor manualmente. El cuadro de giro admite valores enteros, pero puede ampliarse para utilizar diferentes cadenas con validate(), textFromValue() y valueFromText().

Cada vez que cambia el valor, QSpinBox emite las señales valueChanged() y textChanged(), la primera proporciona un int y la segunda un QString. La señal textChanged() proporciona el valor con prefix() y suffix(). El valor actual puede obtenerse con value() y fijarse con setValue().

Haciendo clic en los botones arriba/abajo o utilizando las flechas arriba y abajo del acelerador del teclado aumentará o disminuirá el valor actual en pasos de tamaño singleStep(). Si desea cambiar este comportamiento puede reimplementar la función virtual stepBy(). El valor mínimo y máximo y el tamaño del paso pueden establecerse utilizando uno de los constructores, y pueden modificarse posteriormente con setMinimum(), setMaximum() y setSingleStep().

La mayoría de las cajas de giro son direccionales, pero QSpinBox también puede funcionar como una caja de giro circular, es decir, si el rango es 0-99 y el valor actual es 99, al hacer clic en "arriba" dará 0 si wrapping() se establece en true. Utilice setWrapping() si desea un comportamiento circular.

Al valor mostrado se le pueden anteponer y añadir cadenas arbitrarias que indiquen, por ejemplo, la moneda o la unidad de medida. Véase setPrefix() y setSuffix(). El texto del cuadro de giro se recupera con text() (que incluye cualquier prefix() y suffix()), o con cleanText() (que no tiene prefix(), ni suffix() ni espacios en blanco iniciales o finales).

A menudo es deseable dar al usuario una opción especial (a menudo por defecto) además del rango de valores numéricos. Véase setSpecialValueText() para saber cómo hacerlo con QSpinBox.

Subclasificación de QSpinBox

Si el uso de prefix(), suffix(), y specialValueText() no proporcionan suficiente control, puede subclasificar QSpinBox y reimplementar valueFromText() y textFromValue(). Por ejemplo, este es el código para una caja giratoria personalizada que permite al usuario introducir el tamaño de los iconos (por ejemplo, "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);
}

Véase también QDoubleSpinBox, QDateTimeEdit, QSlider, y Ejemplo de Spin Boxes.

Documentación de propiedades

[read-only] cleanText : QString

Esta propiedad contiene el texto del cuadro de giro excluyendo cualquier prefijo, sufijo o espacio en blanco inicial o final.

Funciones de acceso:

QString cleanText() const

Véase también text, QSpinBox::prefix, y QSpinBox::suffix.

displayIntegerBase : int

Esta propiedad contiene la base utilizada para mostrar el valor de la casilla giratoria

El valor por defecto de displayIntegerBase es 10.

Funciones de acceso:

int displayIntegerBase() const
void setDisplayIntegerBase(int base)

Véase también textFromValue() y valueFromText().

maximum : int

Esta propiedad contiene el valor máximo de la caja de giro.

Al establecer esta propiedad se ajusta el mínimo si es necesario, para asegurar que el rango sigue siendo válido.

El valor máximo por defecto es 99.

Funciones de acceso:

int maximum() const
void setMaximum(int max)

Véase también setRange() y specialValueText.

minimum : int

Esta propiedad contiene el valor mínimo de la caja de giro.

Cuando se establece esta propiedad, la dirección maximum se ajusta si es necesario para asegurar que el rango sigue siendo válido.

El valor mínimo por defecto es 0.

Funciones de acceso:

int minimum() const
void setMinimum(int min)

Véase también setRange() y specialValueText.

prefix : QString

Esta propiedad contiene el prefijo del cuadro de giro

El prefijo se antepone al inicio del valor mostrado. Su uso típico es mostrar una unidad de medida o un símbolo de moneda. Por ejemplo:

sb->setPrefix("$");

Para desactivar la visualización del prefijo, establezca esta propiedad a una cadena vacía. El valor por defecto es sin prefijo. El prefijo no se muestra cuando se establece value() == minimum() y specialValueText().

Si no se define ningún prefijo, prefix() devuelve una cadena vacía.

Funciones de acceso:

QString prefix() const
void setPrefix(const QString &prefix)

Véase también suffix(), setSuffix(), specialValueText() y setSpecialValueText().

singleStep : int

Esta propiedad contiene el valor del paso

Cuando el usuario utiliza las flechas para cambiar el valor del cuadro de giro, el valor se incrementará/disminuirá en la cantidad de singleStep. El valor por defecto es 1. Establecer un valor de singleStep menor que 0 no hace nada.

Funciones de acceso:

int singleStep() const
void setSingleStep(int val)

stepType : StepType

Esta propiedad contiene el tipo de paso.

El tipo de paso puede ser paso único o paso decimal adaptativo.

Funciones de acceso:

QAbstractSpinBox::StepType stepType() const
void setStepType(QAbstractSpinBox::StepType stepType)

suffix : QString

Esta propiedad contiene el sufijo del cuadro de giro

El sufijo se añade al final del valor mostrado. Su uso típico es mostrar una unidad de medida o un símbolo de moneda. Por ejemplo:

sb->setSuffix(" km");

Para desactivar la visualización del sufijo, establezca esta propiedad a una cadena vacía. El valor por defecto es sin sufijo. El sufijo no se muestra para minimum() si se establece specialValueText().

Si no se define ningún sufijo, suffix() devuelve una cadena vacía.

Funciones de acceso:

QString suffix() const
void setSuffix(const QString &suffix)

Véase también prefix(), setPrefix(), specialValueText() y setSpecialValueText().

value : int

Esta propiedad contiene el valor del cuadro de giro

setValue() emitirá valueChanged() si el nuevo valor es diferente del anterior. La propiedad value tiene una segunda señal notificadora que incluye el prefijo y el sufijo del cuadro de giro.

Funciones de acceso:

int value() const
void setValue(int val)

Señal notificadora:

void valueChanged(int i)

Documentación de funciones miembro

[explicit] QSpinBox::QSpinBox(QWidget *parent = nullptr)

Construye una caja giratoria con 0 como valor mínimo y 99 como valor máximo, un valor de paso de 1. El valor se establece inicialmente en 0. Se emparenta con parent.

Véase también setMinimum(), setMaximum(), y setSingleStep().

[virtual noexcept] QSpinBox::~QSpinBox()

Destructor.

[override virtual protected] bool QSpinBox::event(QEvent *event)

Reimplementa: QAbstractSpinBox::event(QEvent *event).

[override virtual protected] void QSpinBox::fixup(QString &input) const

Reimplementa: QAbstractSpinBox::fixup(QString &input) const.

void QSpinBox::setRange(int minimum, int maximum)

Función de conveniencia para establecer los valores minimum, y maximum con una sola llamada a la función.

setRange(minimum, maximum);

es equivalente a:

setMinimum(minimum);
setMaximum(maximum);

Véase también minimum y maximum.

void QSpinBox::setStepType(QAbstractSpinBox::StepType stepType)

Establece el tipo de paso para la caja de giro en stepType, que es paso único o paso decimal adaptativo.

Paso decimal adaptativo significa que el tamaño del paso se ajustará continuamente a una potencia de diez por debajo del valor actual value. Así, cuando el valor es 1100, el paso se establece en 100, por lo que subir una vez lo aumenta a 1200. Si el valor es 1200, al subir el escalón llega a 1300. Para valores negativos, al bajar de -1100 se llega a -1200.

La dirección del paso se tiene en cuenta para manejar los casos extremos, de modo que bajar de 100 lleva el valor a 99 en lugar de a 90. De este modo, un paso hacia arriba seguido de un paso hacia abajo lleva el valor a 99 en lugar de a 90. Por lo tanto, un paso hacia arriba seguido de un paso hacia abajo - o viceversa - siempre aterriza en el valor inicial; 99 -> 100 -> 99.

Establecer esto hará que el cuadro de giro no tenga en cuenta el valor de singleStep, aunque se conserva para que singleStep tenga efecto si el paso decimal adaptativo se desactiva más tarde.

Nota: Función Setter para la propiedad stepType.

Véase también stepType().

[signal] void QSpinBox::textChanged(const QString &text)

Esta señal se emite cada vez que se cambia el texto del cuadro de giro. El nuevo texto se pasa en text con prefix() y suffix().

[virtual protected] QString QSpinBox::textFromValue(int value) const

Esta función virtual es utilizada por el cuadro de giro siempre que necesite mostrar el value dado. La implementación por defecto devuelve una cadena que contiene value impresa de la forma estándar utilizando QWidget::locale().toString(), pero con el separador de miles eliminado a menos que se establezca setGroupSeparatorShown(). Las reimplementaciones pueden devolver cualquier cosa. (Véase el ejemplo en la descripción detallada).

Nota: QSpinBox no llama a esta función para specialValueText() y que ni prefix() ni suffix() deben incluirse en el valor de retorno.

Si reimplementa esto, puede que también necesite reimplementar valueFromText() y validate().

Véase también valueFromText(), validate() y QLocale::groupSeparator().

[override virtual protected] QValidator::State QSpinBox::validate(QString &text, int &pos) const

Reimplementa: QAbstractSpinBox::validate(QString &input, int &pos) const.

[signal] void QSpinBox::valueChanged(int i)

Esta señal se emite cada vez que se cambia el valor del cuadro de giro. El valor entero del nuevo valor se pasa en i.

Nota: Señal notificadora para la propiedad value.

[virtual protected] int QSpinBox::valueFromText(const QString &text) const

Esta función virtual es utilizada por el cuadro de giro siempre que necesite interpretar text introducido por el usuario como un valor.

Las subclases que necesiten mostrar los valores del cuadro de giro de forma no numérica necesitan reimplementar esta función.

Nota: QSpinBox trata specialValueText() por separado; esta función sólo se ocupa de los demás valores.

Véase también textFromValue() y validate().

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.