Sur cette page

QSpinBox Class

La classe QSpinBox fournit un widget « spin box ». En savoir plus...

En-tête : #include <QSpinBox>
CMake : find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake : QT += widgets
Hérite de : QAbstractSpinBox

Propriétés

Fonctions publiques

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

Emplacements publics

void setValue(int val)

Signaux

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

Fonctions protégées

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

Fonctions protégées réimplémentées

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

Description détaillée

Widget « Spin box » affichant un nombre entier

QSpinBox est conçu pour gérer des entiers et des ensembles discrets de valeurs (par exemple, les noms de mois) ; utilisez QDoubleSpinBox pour les valeurs à virgule flottante.

QSpinBox permet à l’utilisateur de choisir une valeur en cliquant sur les boutons haut/bas ou en appuyant sur les touches haut/bas du clavier pour augmenter ou diminuer la valeur actuellement affichée. L’utilisateur peut également saisir la valeur manuellement. La zone de sélection prend en charge les valeurs entières, mais peut être étendue pour utiliser différentes chaînes de caractères grâce aux fonctions validate(), textFromValue() et valueFromText().

À chaque modification de la valeur, QSpinBox émet les signaux valueChanged() et textChanged(), le premier fournissant un entier (int) et le second une chaîne de caractères ( QString). Le signal textChanged() fournit la valeur à la fois via prefix() et suffix(). La valeur actuelle peut être récupérée avec value() et définie avec setValue().

Cliquer sur les boutons haut/bas ou utiliser les flèches haut et bas du clavier permettra d’augmenter ou de diminuer la valeur actuelle par incréments de taille singleStep(). Si vous souhaitez modifier ce comportement, vous pouvez réimplémenter la fonction virtuelle stepBy(). Les valeurs minimale et maximale ainsi que la taille du pas peuvent être définies à l’aide de l’un des constructeurs, puis modifiées ultérieurement avec setMinimum(), setMaximum() et setSingleStep().

La plupart des champs de sélection sont directionnels, mais QSpinBox peut également fonctionner comme un champ de sélection circulaire : par exemple, si la plage est comprise entre 0 et 99 et que la valeur actuelle est 99, cliquer sur « haut » donnera 0 si wrapping() est défini sur true. Utilisez setWrapping() si vous souhaitez un comportement circulaire.

La valeur affichée peut être précédée ou suivie de chaînes de caractères arbitraires indiquant, par exemple, la devise ou l’unité de mesure. Voir setPrefix() et setSuffix(). Le texte contenu dans la zone de saisie est récupéré avec text() (qui inclut tout prefix() et suffix()), ou avec cleanText() (qui ne contient ni prefix(), ni suffix(), ni d’espaces en début ou en fin de chaîne).

Il est souvent souhaitable de proposer à l’utilisateur un choix spécial (souvent par défaut) en plus de la plage de valeurs numériques. Consultez setSpecialValueText() pour savoir comment procéder avec QSpinBox.

Sous-classer QSpinBox

Si l'utilisation de prefix(), suffix() et specialValueText() ne vous offre pas suffisamment de contrôle, vous pouvez créer une sous-classe de QSpinBox et réimplémenter valueFromText() et textFromValue(). Par exemple, voici le code d’une zone de sélection personnalisée permettant à l’utilisateur de saisir des tailles d’icônes (par exemple, « 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);
}

Voir également QDoubleSpinBox, QDateTimeEdit, QSlider et l'exemple sur les spin boxes.

Documentation sur les propriétés

[read-only] cleanText : QString

Cette propriété contient le texte de la zone de saisie, à l'exclusion de tout préfixe, suffixe ou espace en début ou en fin de chaîne.

Fonctions d'accès :

QString cleanText() const

Voir également text, QSpinBox::prefix et QSpinBox::suffix.

displayIntegerBase : int

Cette propriété définit la base utilisée pour afficher la valeur de la zone de saisie à rouleau

La valeur par défaut de displayIntegerBase est 10.

Fonctions d'accès :

int displayIntegerBase() const
void setDisplayIntegerBase(int base)

Voir également textFromValue() et valueFromText().

maximum : int

Cette propriété contient la valeur maximale de la zone de saisie à défilement

Lors de la configuration de cette propriété, la valeur minimale est ajustée si nécessaire, afin de garantir que la plage reste valide.

La valeur maximale par défaut est 99.

Fonctions d'accès :

int maximum() const
void setMaximum(int max)

Voir également setRange() et specialValueText.

minimum : int

Cette propriété contient la valeur minimale de la zone de saisie à sélection

Lors de la configuration de cette propriété, l'maximum e est ajustée si nécessaire afin de garantir que la plage reste valide.

La valeur minimale par défaut est 0.

Fonctions d'accès :

int minimum() const
void setMinimum(int min)

Voir également setRange() et specialValueText.

prefix : QString

Cette propriété contient le préfixe de la zone de saisie à spin

Le préfixe est ajouté au début de la valeur affichée. Il est généralement utilisé pour afficher une unité de mesure ou un symbole monétaire. Par exemple :

sb->setPrefix("$");

Pour désactiver l'affichage du préfixe, définissez cette propriété sur une chaîne vide. Par défaut, aucun préfixe n'est affiché. Le préfixe n'est pas affiché lorsque value() == minimum() et que specialValueText() est défini.

Si aucun préfixe n’est défini, la fonction prefix() renvoie une chaîne vide.

Fonctions d’accès :

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

Voir également suffix(), setSuffix(), specialValueText() et setSpecialValueText().

singleStep : int

Cette propriété détermine la valeur du pas

Lorsque l'utilisateur utilise les flèches pour modifier la valeur de la zone de saisie, celle-ci est incrémentée ou décrémentée de la valeur de « singleStep ». La valeur par défaut est 1. Définir une valeur « singleStep » inférieure à 0 n'a aucun effet.

Fonctions d'accès :

int singleStep() const
void setSingleStep(int val)

stepType : StepType

Cette propriété définit le type de pas.

Le type de pas peut être un pas unique ou un pas décimal adaptatif.

Fonctions d'accès :

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

suffix : QString

Cette propriété contient le suffixe de la zone de saisie à rouleau

Le suffixe est ajouté à la fin de la valeur affichée. Il est généralement utilisé pour afficher une unité de mesure ou un symbole monétaire. Par exemple :

sb->setSuffix(" km");

Pour désactiver l'affichage du suffixe, définissez cette propriété sur une chaîne vide. Par défaut, aucun suffixe n'est affiché. Le suffixe n'est pas affiché pour la fonction ` minimum()` si la fonction ` specialValueText()` est définie.

Si aucun suffixe n’est défini, la fonction suffix() renvoie une chaîne vide.

Fonctions d’accès :

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

Voir également prefix(), setPrefix(), specialValueText() et setSpecialValueText().

value : int

Cette propriété contient la valeur de la zone de saisie à rouleau

setValue() émettra un signal « valueChanged() » si la nouvelle valeur diffère de l'ancienne. La propriété « value » dispose d'un deuxième signal de notification qui inclut le préfixe et le suffixe de la zone de saisie.

Fonctions d'accès :

int value() const
void setValue(int val)

Signal de notification :

void valueChanged(int i)

Documentation des fonctions membres

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

Crée une zone de sélection à rouleau dont la valeur minimale est 0 et la valeur maximale 99, avec un pas de 1. La valeur est initialement définie sur 0. Elle est rattachée à parent.

Voir également setMinimum(), setMaximum() et setSingleStep().

[virtual noexcept] QSpinBox::~QSpinBox()

Destructeur.

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

Réimplémente : QAbstractSpinBox::event(QEvent *event).

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

Réimplémente : QAbstractSpinBox::fixup(QString &input) const.

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

Fonction pratique permettant de définir les valeurs de ` minimum` et ` maximum ` en un seul appel de fonction.

setRange(minimum, maximum);

équivaut à :

setMinimum(minimum);
setMaximum(maximum);

Voir également minimum et maximum.

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

Définit le type de pas de la zone de sélection sur « stepType », ce qui correspond à un pas unique ou à un pas décimal adaptatif.

Un pas décimal adaptatif signifie que la taille du pas sera continuellement ajustée à une puissance de dix inférieure à la valeur actuelle de « value ». Ainsi, lorsque la valeur est de 1 100, le pas est défini sur 100 ; une augmentation d’un pas fait donc passer la valeur à 1 200. Pour 1 200, une augmentation d’un pas fait passer la valeur à 1 300. Pour les valeurs négatives, une diminution à partir de -1 100 conduit à -1 200.

Le sens de l’incrément est pris en compte pour gérer les cas limites, de sorte qu’une diminution à partir de 100 ramène la valeur à 99 au lieu de 90. Ainsi, un incrément suivi d’une diminution – ou inversement – ramène toujours la valeur à sa valeur initiale : 99 -> 100 -> 99.

La définition de ce paramètre fera en sorte que la zone de saisie ignore la valeur de ` singleStep`, bien que celle-ci soit conservée afin que ` singleStep ` prenne effet si le pas décimal adaptatif est désactivé ultérieurement.

Remarque : fonctionde définition de la propriété stepType.

Voir également stepType().

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

Ce signal est émis chaque fois que le texte de la zone de saisie est modifié. Le nouveau texte est transmis via les méthodes ` text `, ` prefix()` et ` suffix()`.

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

Cette fonction virtuelle est utilisée par la zone de saisie à chaque fois qu’elle doit afficher la valeur value. L’implémentation par défaut renvoie une chaîne contenant value, affichée de manière standard à l’aide de QWidget::locale(),toString(), mais sans le séparateur des milliers, sauf si setGroupSeparatorShown() est défini. Les réimplémentations peuvent renvoyer n’importe quelle valeur. (Voir l’exemple dans la description détaillée.)

Remarque : QSpinBox n’appelle pas cette fonction pour specialValueText() et ni prefix() ni suffix() ne doivent être inclus dans la valeur de retour.

Si vous réimplémentez cette fonction, vous devrez peut-être également réimplémenter valueFromText() et validate()

Voir également valueFromText(), validate() et QLocale::groupSeparator().

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

Réimplémentation de : QAbstractSpinBox::validate(QString &input, int &pos) const.

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

Ce signal est émis chaque fois que la valeur de la zone de sélection est modifiée. La partie entière de la nouvelle valeur est transmise dans ` i`.

Remarque : signalde notification pour la propriété value.

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

Cette fonction virtuelle est utilisée par la zone de sélection chaque fois qu'elle doit interpréter une « text » saisie par l'utilisateur comme une valeur.

Les sous-classes qui doivent afficher les valeurs de la zone de sélection sous une forme non numérique doivent réimplémenter cette fonction.

Remarque : QSpinBox gère specialValueText() séparément ; cette fonction ne concerne que les autres valeurs.

Voir également textFromValue() et 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.