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 | textChanged (const QString & text ) |
| void | valueChanged (int i ) |
| 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,點擊 Up 將給齣 0 若 wrapping () 被設為 true。使用 setWrapping () 若想要循環行為。
可以為顯示值前置和追加任意字符串指示,例如,貨幣 (或度量單位)。見 setPrefix () 和 setSuffix ()。自鏇框文本的檢索是采用 text () (包括任何 prefix () 和 suffix ()),或采用 cleanText () (沒有 prefix (),沒有 suffix () 且沒有前導或結尾空白)。
經常期望對用戶給齣特殊 (常常默認) 選擇,除數值範圍外。見 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 ,和 自鏇框範例 .
此特性保持自鏇框的文本,不包括任何前綴、後綴、或前導/結尾空白。
訪問函數:
| QString | cleanText () const |
另請參閱 text , QSpinBox::prefix ,和 QSpinBox::suffix .
此特性保持用於顯示自鏇框值的基
默認 displayIntegerBase 值為 10。
該特性在 Qt 5.2 引入。
訪問函數:
| int | displayIntegerBase () const |
| void | setDisplayIntegerBase (int base ) |
另請參閱 textFromValue () 和 valueFromText ().
此特性保持自鏇框的最大值
當設置此特性時,最小有必要調節,以確保範圍仍然有效。
默認最大值為 99。
訪問函數:
| int | maximum () const |
| void | setMaximum (int max ) |
另請參閱 setRange () 和 specialValueText .
此特性保持自鏇框的最小值
當設置此特性 maximum 有必要調節,以確保範圍仍然有效。
默認最小值為 0。
訪問函數:
| int | minimum () const |
| void | setMinimum (int min ) |
另請參閱 setRange () 和 specialValueText .
此特性保持自鏇框的前綴
前綴會前置到顯示值開頭。典型用途是顯示度量單位 (或貨幣符號)。例如:
sb->setPrefix("$");
要關閉前綴顯示,把此特性設為空字符串。默認為無前綴。前綴不顯示,當 value () == minimum () 和 specialValueText () 有設置。
prefix() 返迴空字符串,若未設置前綴。
訪問函數:
| QString | prefix () const |
| void | setPrefix (const QString & prefix ) |
另請參閱 suffix (), setSuffix (), specialValueText (),和 setSpecialValueText ().
此特性保持步幅值
當用戶使用箭頭改變自鏇框值時,值將按 singleStep 數量遞增/遞減。默認值為 1。將 singleStep 值設為小於 0,什麼都不做。
訪問函數:
| int | singleStep () const |
| void | setSingleStep (int val ) |
此特性保持步幅類型。
步幅類型可以是單步幅,或自適應十進製步幅。
訪問函數:
| QAbstractSpinBox::StepType | stepType () const |
| void | setStepType (QAbstractSpinBox::StepType stepType ) |
此特性保持自鏇框的後綴
後綴會被追加到顯示值末尾。典型用法是顯示度量單位 (或貨幣符號)。例如:
sb->setSuffix(" km");
要關閉後綴顯示,將此特性設為空字符串。默認無後綴。後綴不顯示對於 minimum () 若 specialValueText () 有設置。
若未設置後綴,suffix() 返迴空字符串。
訪問函數:
| QString | suffix () const |
| void | setSuffix (const QString & suffix ) |
另請參閱 prefix (), setPrefix (), specialValueText (),和 setSpecialValueText ().
此特性保持自鏇框的值
setValue() 將發射 valueChanged () 若新值不同於舊值。值特性擁有第 2 通知信號,其中包括自鏇框前綴和後綴。
訪問函數:
| int | value () const |
| void | setValue (int val ) |
通知程序信號:
| void | valueChanged (int i ) |
構造自鏇框采用 0 作為最小值和 99 作為最大值,步幅值 1。初始值被設為 0。父級為 parent .
另請參閱 setMinimum (), setMaximum (),和 setSingleStep ().
[signal]
void
QSpinBox::
textChanged
(const
QString
&
text
)
此信號被發射每當自鏇框文本改變時。新文本被傳入 text with prefix () 和 suffix ().
該函數在 Qt 5.14 引入。
[signal]
void
QSpinBox::
valueChanged
(
int
i
)
此信號被發射,每當自鏇框值改變時。新值的整數值會被傳入 i .
注意: 通知程序信號對於特性 value .
注意: 信號 valueChanged 在此類中被重載。通過使用函數指針句法連接到此信號,Qt 提供用於獲得如此範例展示的函數指針的方便幫助程序:
connect(spinBox, QOverload<int>::of(&QSpinBox::valueChanged), [=](int i){ /* ... */ });
[虛擬]
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.
方便函數能設置 minimum ,和 maximum 值采用單函數調用。
setRange(minimum, maximum);
相當於:
setMinimum(minimum); setMaximum(maximum);
將用於自鏇框的步幅類型設為 stepType ,其是單步幅或自適應十進製步幅。
自適應十進製步幅,意味著會連續調節步幅大小到十次方之一小於當前 value 。因此當值為 1100 時,步幅被設為 100,所以嚮上步進一次會遞增到 1200。對於 1200,嚮上步進會到 1300。對於負值,嚮下步進會從 -1100 到 -1200。
考慮步進方嚮來處理邊緣情況,所以從 100 嚮下步進值到 99 而不是 90。這樣,嚮上步進緊接著嚮下步進 -- 反之亦然 -- 始終落在起始值上;99 -> 100 -> 99。
設置此值將導緻自鏇框無視值 singleStep ,雖然它有保留以便 singleStep 能生效,若自適應十進製步幅稍後被關閉。
注意: setter 函數對於特性 stepType .
該函數在 Qt 5.12 引入。
另請參閱 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 (QString &input, int &pos) const.
[virtual protected]
int
QSpinBox::
valueFromText
(const
QString
&
text
) const
此虛函數用於自鏇框,每當它需要解釋 text 由用戶作為值鍵入。
需要以非數字方式顯示自鏇框值的子類,需要重實現此函數。
注意: QSpinBox 處理 specialValueText () 單獨;此函數隻關心其它值。
另請參閱 textFromValue () 和 validate ().