QSpinBox Class
QSpinBox クラスは、スピンボックスウィジェットを提供します。詳細...
| ヘッダー: | #include <QSpinBox> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 継承元: | QAbstractSpinBox |
プロパティ
|
|
パブリック関数
| 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 |
パブリックスロット
| void | setValue(int val) |
シグナル
| void | textChanged(const QString &text) |
| void | valueChanged(int i) |
protected関数
| virtual QString | textFromValue(int value) const |
| virtual int | valueFromText(const QString &text) const |
再実装された保護関数
| virtual bool | event(QEvent *event) override |
| virtual void | fixup(QString &input) const override |
| virtual QValidator::State | validate(QString &text, int &pos) const override |
詳細な説明

QSpinBoxは、整数や離散的な値の集合(例:月の名前)を扱うように設計されています。浮動小数点値にはQDoubleSpinBox を使用してください。
QSpinBox を使用すると、ユーザーは上下ボタンをクリックするか、キーボードの上下キーを押して、現在表示されている値を増減させ、値を選択することができます。また、ユーザーは手動で値を入力することもできます。スピンボックスは整数値をサポートしていますが、validate()、textFromValue()、valueFromText() を使用することで、さまざまな文字列を使用するように拡張することができます。
値が変更されるたびに、QSpinBoxはvalueChanged()およびtextChanged()シグナルを発行します。前者はint型、後者はQString 型を返します。textChanged()シグナルは、prefix()およびsuffix()の両方の値を提供します。現在の値はvalue()で取得し、setValue()で設定できます。
上下ボタンをクリックするか、キーボードショートカットの上矢印キーおよび下矢印キーを使用すると、singleStep() で指定されたステップサイズ分だけ現在の値が増減します。 この動作を変更したい場合は、仮想関数stepBy() を再実装することができます。最小値、最大値、およびステップサイズは、コンストラクタのいずれかを使用して設定でき、後でsetMinimum()、setMaximum()、およびsetSingleStep() を使用して変更できます。
ほとんどのスピンボックスは方向性がありますが、QSpinBoxは循環型スピンボックスとしても動作します。つまり、範囲が0~99で現在の値が99の場合、wrapping()がtrueに設定されていれば、「上」をクリックすると0になります。循環動作を望む場合は、setWrapping()を使用してください。
表示される値の先頭や末尾に、通貨や測定単位などを示す任意の文字列を追加・付加することができます。setPrefix() およびsetSuffix() を参照してください。スピンボックス内のテキストは、text()(prefix() およびsuffix() の出力が含まれます)またはcleanText()(prefix()、suffix() を含まず、先頭および末尾の空白もありません)で取得できます。
多くの場合、数値の範囲に加えて、ユーザーに特別な(多くの場合デフォルトの)選択肢を提供することが望ましいです。QSpinBox を使用してこれを実現する方法については、setSpecialValueText() を参照してください。
QSpinBoxのサブクラス化
prefix()、suffix()、specialValueText() を使用しても十分な制御ができない場合は、QSpinBox をサブクラス化し、valueFromText() およびtextFromValue() を再実装します。例えば、ユーザーがアイコンサイズ(例:「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);
}QDoubleSpinBox 、QDateTimeEdit 、QSlider 、および「スピンボックスの例」も参照してください 。
プロパティのドキュメント
[read-only] cleanText : QString
このプロパティには、プレフィックス、サフィックス、および先頭または末尾の空白を除いたスピンボックスのテキストが格納されます。
アクセス関数:
| QString | cleanText() const |
関連項目: text 、QSpinBox::prefix 、およびQSpinBox::suffix 。
displayIntegerBase : int
このプロパティは、スピンボックスの値を表示する際に使用される基数を指定します
displayIntegerBase のデフォルト値は 10 です。
アクセス関数:
| int | displayIntegerBase() const |
| void | setDisplayIntegerBase(int base) |
textFromValue() およびvalueFromText()も参照してください 。
maximum : int
このプロパティには、スピンボックスの最大値が格納されます
このプロパティを設定すると、範囲が有効な範囲内となるよう、必要に応じて最小値が調整されます。
デフォルトの最大値は 99 です。
アクセス関数:
| int | maximum() const |
| void | setMaximum(int max) |
関連項目: setRange() およびspecialValueText 。
minimum : int
このプロパティは、スピンボックスの最小値を保持します
このプロパティを設定すると、範囲が有効な状態を維持できるよう、必要に応じてmaximum が調整されます。
デフォルトの最小値は 0 です。
アクセス関数:
| int | minimum() const |
| void | setMinimum(int min) |
関連項目: setRange() およびspecialValueText 。
prefix : QString
このプロパティは、スピンボックスのプレフィックスを指定します
このプレフィックスは、表示される値の先頭に付加されます。一般的な用途としては、測定単位や通貨記号の表示が挙げられます。例:
sb->setPrefix("$");接頭辞の表示を無効にするには、このプロパティを空の文字列に設定します。デフォルトでは接頭辞は表示されません。value() ==minimum() であり、かつspecialValueText() が設定されている場合、接頭辞は表示されません。
プレフィックスが設定されていない場合、prefix() は空の文字列を返します。
アクセス関数:
| QString | prefix() const |
| void | setPrefix(const QString &prefix) |
関連項目: suffix()、setSuffix()、specialValueText()、およびsetSpecialValueText()。
singleStep : int
このプロパティにはステップ値が格納されます
ユーザーが矢印キーを使用してスピンボックスの値を変更すると、その値は singleStep の値だけ増減します。デフォルト値は 1 です。singleStep の値に 0 未満を設定しても、何も起こりません。
アクセス関数:
| int | singleStep() const |
| void | setSingleStep(int val) |
stepType : StepType
このプロパティはステップタイプを保持します。
ステップタイプは、シングルステップまたは適応型小数ステップのいずれかです。
アクセス関数:
| QAbstractSpinBox::StepType | stepType() const |
| void | setStepType(QAbstractSpinBox::StepType stepType) |
suffix : QString
このプロパティは、スピンボックスの接尾辞を保持します
接尾辞は、表示される値の末尾に追加されます。一般的な用途としては、測定単位や通貨記号を表示することが挙げられます。例:
sb->setSuffix(" km");サフィックスの表示を無効にするには、このプロパティを空の文字列に設定します。デフォルトではサフィックスは表示されません。specialValueText()が設定されている場合、minimum()ではサフィックスは表示されません。
接尾辞が設定されていない場合、`suffix()`は空の文字列を返します。
アクセス関数:
| QString | suffix() const |
| void | setSuffix(const QString &suffix) |
関連項目: prefix()、setPrefix()、specialValueText()、およびsetSpecialValueText()。
value : int
このプロパティは、スピンボックスの値を保持します。
setValue() は、新しい値が古い値と異なる場合、valueChanged() を発火します。value プロパティには、スピンボックスのプレフィックスとサフィックスを含む 2 つ目の通知信号があります。
アクセス関数:
| int | value() const |
| void | setValue(int val) |
通知シグナル:
| void | valueChanged(int i) |
メンバ関数のドキュメント
[explicit] QSpinBox::QSpinBox(QWidget *parent = nullptr)
最小値を 0、最大値を 99、ステップ値を 1 とするスピンボックスを作成します。初期値は 0 に設定されます。このスピンボックスは、parent の子要素として配置されます。
setMinimum()、setMaximum()、およびsetSingleStep()も参照してください 。
[virtual noexcept] QSpinBox::~QSpinBox()
デストラクタ。
[override virtual protected] bool QSpinBox::event(QEvent *event)
QAbstractSpinBox::event(QEvent *event) を再実装します。
[override virtual protected] void QSpinBox::fixup(QString &input) const
QAbstractSpinBox::fixup (QString &input)const を再実装します。
void QSpinBox::setRange(int minimum, int maximum)
minimum 、maximum の各値を、1回の関数呼び出しで設定できる便利な関数です。
setRange(minimum, maximum);これは、以下と同等です:
setMinimum(minimum);
setMaximum(maximum);「 minimum 」および「maximum 」も参照してください 。
void QSpinBox::setStepType(QAbstractSpinBox::StepType stepType)
スピンボックスのステップタイプを「stepType 」に設定します。これは、シングルステップまたは適応型小数ステップです。
適応型小数ステップとは、ステップサイズが現在のvalue より10の累乗分だけ小さい値に継続的に調整されることを意味します。したがって、値が1100の場合、ステップは100に設定されるため、1ステップ進むと1200になります。1200の場合、1ステップ進むと1300になります。 負の値の場合、-1100からステップダウンすると-1200になります。
境界ケースを処理するためにステップの方向が考慮されるため、100からステップダウンすると、値は90ではなく99になります。したがって、ステップアップの後にステップダウンを行う場合、あるいはその逆の場合でも、常に開始値に戻ります(例:99 → 100 → 99)。
これを設定すると、スピンボックスはsingleStep の値を無視するようになりますが、その値は保持されるため、後で適応型小数点ステップがオフにされた場合、singleStep が有効になります。
注: プロパティ `stepType`のセッター 関数です。
stepType()も参照してください 。
[signal] void QSpinBox::textChanged(const QString &text)
このシグナルは、スピンボックスのテキストが変更されるたびに発火します。新しいテキストは、`prefix()` および `suffix()` を通じて `text ` に渡されます。
[virtual protected] QString QSpinBox::textFromValue(int value) const
この仮想関数は、スピンボックスが指定されたvalue を表示する必要があるたびに呼び出されます。デフォルトの実装は、QWidget::locale()およびtoString()を使用して標準的な形式でvalue を出力した文字列を返しますが、setGroupSeparatorShown()が設定されていない限り、千の位区切りは削除されます。再実装では、任意の値を返すことができます。(詳細な説明にある例を参照してください。)
注:QSpinBox は、specialValueText()に対してこの関数を呼び出さない。また、prefix()もsuffix()も、戻り値に含めてはならない。
これを再実装する場合は、valueFromText() およびvalidate() も再実装する必要がある場合があります。
valueFromText()、validate()、およびQLocale::groupSeparator()も参照してください 。
[override virtual protected] QValidator::State QSpinBox::validate(QString &text, int &pos) const
QAbstractSpinBox::validate(QString &input, int &pos) const を再実装します。
[signal] void QSpinBox::valueChanged(int i)
このシグナルは、スピンボックスの値が変更されるたびに発火します。新しい値の整数部分が `i` に渡されます。
注: プロパティ `value` に対する通知 シグナルです。
[virtual protected] int QSpinBox::valueFromText(const QString &text) const
この仮想関数は、ユーザーがtext に入力した内容を値として解釈する必要がある場合、スピンボックスによって使用されます。
スピンボックスの値を数値以外の形式で表示する必要があるサブクラスは、この関数を再実装する必要があります。
注:QSpinBox は、specialValueText() を個別に処理します。この関数は、それ以外の値のみを対象としています。
textFromValue() および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.