QSpinBox 類

The QSpinBox 類提供自鏇框 Widget。 更多...

頭: #include <QSpinBox>
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 valueChanged (int i )
void valueChanged (const QString & text )

靜態公共成員

const QMetaObject staticMetaObject

保護函數

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

額外繼承成員

詳細描述

The QSpinBox 類提供自鏇框 Widget。

QSpinBox is designed to handle integers and discrete sets of values (e.g., month names); use QDoubleSpinBox 為浮點值。

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 () 和 valueFromText ().

Every time the value changes QSpinBox emits two valueChanged () signals, one providing an int and the other a QString QString overload provides the value with both prefix () 和 suffix ()。可以抓取當前值采用 value () 和設置采用 setValue ().

點擊嚮上/嚮下按鈕 (或使用鍵盤加速鍵的嚮上和嚮下箭頭) 將遞增 (或遞減) 當前值,按步幅大小 singleStep ()。若想要改變此行為,可以重實現虛函數 stepBy ()。最小和最大值及步幅大小的設置可以使用某個構造函數,且稍後可以改變采用 setMinimum (), setMaximum () 和 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 () 被設為 true。使用 setWrapping () 若想要循環行為。

可以為顯示值前置和追加任意字符串指示,例如,貨幣 (或度量單位)。見 setPrefix () 和 setSuffix ()。自鏇框文本的檢索是采用 text () (包括任何 prefix () 和 suffix ()),或采用 cleanText () (沒有 prefix (),沒有 suffix () 且沒有前導或結尾空白)。

經常期望對用戶給齣特殊 (常常默認) 選擇,除數值範圍外。見 setSpecialValueText () for how to do this with QSpinBox .

子類化 QSpinBox

若使用 prefix (), suffix (),和 specialValueText () don't provide enough control, you subclass 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 ,和 自鏇框範例 .

特性文檔編製

cleanText : const QString

此特性保持自鏇框的文本,不包括任何前綴、後綴、或前導/結尾空白。

訪問函數:

QString cleanText () const

另請參閱 text , QSpinBox::prefix ,和 QSpinBox::suffix .

displayIntegerBase : int

此特性保持用於顯示自鏇框值的基

默認 displayIntegerBase 值為 10。

該特性在 Qt 5.2 引入。

訪問函數:

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");
					

要關閉後綴顯示,將此特性設為空字符串。默認無後綴。後綴不顯示對於 minimum () 若 specialValueText () 有設置。

若未設置後綴,suffix() 返迴空字符串。

訪問函數:

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

另請參閱 prefix (), setPrefix (), specialValueText (),和 setSpecialValueText ().

value : int

此特性保持自鏇框的值

setValue() 將發射 valueChanged () 若新值不同於舊值。值特性擁有第 2 通知信號,其中包括自鏇框前綴和後綴。

訪問函數:

int value () const
void setValue (int val )

通知程序信號:

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

成員函數文檔編製

QSpinBox:: QSpinBox ( QWidget * parent = nullptr)

構造自鏇框采用 0 作為最小值和 99 作為最大值,步幅值 1。初始值被設為 0。父級為 parent .

另請參閱 setMinimum (), setMaximum (),和 setSingleStep ().

[虛擬] QSpinBox:: ~QSpinBox ()

析構函數。

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

重實現自 QAbstractSpinBox::event ().

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

重實現自 QAbstractSpinBox::fixup ().

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

方便函數能設置 minimum ,和 maximum 值采用單函數調用。

setRange(minimum, maximum);
					

相當於:

setMinimum(minimum);
setMaximum(maximum);
					

另請參閱 minimum and maximum .

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

將用於自鏇框的步幅類型設為 stepType ,其是單步幅或自適應十進製步幅。

自適應十進製步幅,意味著會連續調節步幅大小到十次方之一小於當前 value 。因此當值為 1100 時,步幅被設為 100,所以嚮上步進一次會遞增到 1200。對於 1200,嚮上步進會到 1300。對於負值,嚮下步進會從 -1100 到 -1200。

考慮步進方嚮來處理邊緣情況,所以從 100 嚮下步進值到 99 而不是 90。這樣,嚮上步進緊接著嚮下步進 -- 反之亦然 -- 始終落在起始值上;99 -> 100 -> 99。

設置此值將導緻自鏇框無視值 singleStep ,雖然它有保留以便 singleStep 能生效,若自適應十進製步幅稍後被關閉。

該函數在 Qt 5.12 引入。

注意: setter 函數對於特性 stepType .

另請參閱 stepType ().

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

此虛函數用於自鏇框,每當它需要顯示給定 value 。默認實現返迴的字符串包含 value 會以標準方式打印使用 QWidget::locale ().toString(),但會移除韆位分隔符,除非 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 ().

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

此信號被發射,每當自鏇框值改變時。新值的整數值會被傳入 i .

注意: 信號 valueChanged 在此類中被重載。通過使用函數指針句法連接到此信號,Qt 提供用於獲得如此範例展示的函數指針的方便幫助程序:

connect(spinBox, QOverload<int>::of(&QSpinBox::valueChanged),
    [=](int i){ /* ... */ });
					

注意: 通知程序信號對於特性 value .

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

這是重載函數。

The new value is passed in text with prefix () 和 suffix ().

注意: 信號 valueChanged 在此類中被重載。通過使用函數指針句法連接到此信號,Qt 提供用於獲得如此範例展示的函數指針的方便幫助程序:

connect(spinBox, QOverload<const QString &>::of(&QSpinBox::valueChanged),
    [=](const QString &text){ /* ... */ });
					

注意: 通知程序信號對於特性 value .

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

此虛函數用於自鏇框,每當它需要解釋 text 由用戶作為值鍵入。

需要以非數字方式顯示自鏇框值的子類,需要重實現此函數。

注意: QSpinBox 處理 specialValueText () 單獨;此函數隻關心其它值。

另請參閱 textFromValue () 和 validate ().