QDoubleSpinBox 類提供采用雙精度的自鏇框 Widget。 更多...
| 頭: | #include <QDoubleSpinBox> |
| qmake: | QT += widgets |
| 繼承: | QAbstractSpinBox |
|
| QDoubleSpinBox (QWidget * parent = nullptr) | |
| virtual | ~QDoubleSpinBox () |
| QString | cleanText () const |
| int | decimals () const |
| double | maximum () const |
| double | minimum () const |
| QString | prefix () const |
| void | setDecimals (int prec ) |
| void | setMaximum (double max ) |
| void | setMinimum (double min ) |
| void | setPrefix (const QString & prefix ) |
| void | setRange (double minimum , double maximum ) |
| void | setSingleStep (double val ) |
| void | setStepType (QAbstractSpinBox::StepType stepType ) |
| void | setSuffix (const QString & suffix ) |
| double | singleStep () const |
| QAbstractSpinBox::StepType | stepType () const |
| QString | suffix () const |
| virtual QString | textFromValue (double value ) const |
| double | value () const |
| virtual double | valueFromText (const QString & text ) const |
| virtual void | fixup (QString & input ) const override |
| virtual QValidator::State | validate (QString & text , int & pos ) const override |
| void | setValue (double val ) |
| void | textChanged (const QString & text ) |
| void | valueChanged (double d ) |
QDoubleSpinBox 允許用戶通過點擊嚮上和嚮下按鈕 (或通過按下鍵盤嚮上或嚮下鍵) 以遞增 (或遞減) 目前顯示值來選取值。用戶還可以手動鍵入值。自鏇框支持雙精度值,但可以擴展到使用不同字符串采用 validate (), textFromValue () 和 valueFromText ().
每當值改變 QDoubleSpinBox 會發射 valueChanged () 和 textChanged () 信號,前者提供 double 而後者提供 QString 。 textChanged () 信號提供的值具有兩者 prefix () 和 suffix ()。可以抓取當前值采用 value () 和設置采用 setValue ().
注意:QDoubleSpinBox 將四捨五入數字,所有可以采用當前精度顯示它們。在將小數位數設為 2 的 QDoubleSpinBox,調用 setValue (2.555) 將導緻 value () 返迴 2.56。
點擊嚮上和嚮下按鈕 (或使用鍵盤加速鍵的嚮上和嚮下箭頭) 將遞增 (或遞減) 當前值按步幅大小 singleStep ()。若想要改變此行為,可以重實現虛函數 stepBy ()。最小和最大值及步幅大小的設置可以使用某個構造函數,且稍後可以改變采用 setMinimum (), setMaximum () 和 setSingleStep ()。自鏇框默認擁有 2 位小數精度,但可以改變這使用 setDecimals ().
大多數自鏇框有方嚮性,但 QDoubleSpinBox 還可以作為循環自鏇框運轉,即,若範圍為 0.0-99.9 且當前值為 99.9,點擊 Up 將給齣 0 若 wrapping () 被設為 true。使用 setWrapping () 若想要循環行為。
可以為顯示值前置和追加任意字符串指示,例如,貨幣 (或度量單位)。見 setPrefix () 和 setSuffix ()。自鏇框文本的檢索是采用 text () (包括任何 prefix () 和 suffix ()),或采用 cleanText () (沒有 prefix (),沒有 suffix () 且沒有前導或結尾空白)。
經常期望對用戶給齣特殊 (常常默認) 選擇,除數值範圍外。見 setSpecialValueText () 瞭解如何采用 QDoubleSpinBox 做到這。
注意: QDoubleSpinBox 的顯示值被限製到 18 個字符,除最終的前綴和後綴內容外。這個限製被用來保持雙紡箱的可用性,即使有非常大的值。此局限性用於保持 double 自鏇框的可用性,即使具有極大值。
另請參閱 QSpinBox , QDateTimeEdit , QSlider ,和 自鏇框範例 .
此特性保持自鏇框的文本,不包括任何前綴、後綴、或前導/結尾空白。
訪問函數:
| QString | cleanText () const |
另請參閱 text , QDoubleSpinBox::prefix ,和 QDoubleSpinBox::suffix .
此特性保持自鏇盒的精度 (以小數位數錶示)
將用於顯示和解釋,自鏇框雙精度數的小數位數設為多少。
警告: 最大值對於 decimals 是 DBL_MAX_10_EXP + DBL_DIG (即 323),因為 double 類型的局限性。
注意:最大、最小及值可能改變,因更改此特性導緻。
訪問函數:
| int | decimals () const |
| void | setDecimals (int prec ) |
此特性保持自鏇框的最大值
當設置此特性 minimum 有必要調節,以確保範圍仍然有效。
默認最大值為 99.99。
注意:會四捨五入最大值,以匹配 decimals 特性。
訪問函數:
| double | maximum () const |
| void | setMaximum (double max ) |
另請參閱 decimals and setRange ().
此特性保持自鏇框的最小值
當設置此特性 maximum 有必要調節,以確保範圍仍然有效。
默認最小值為 0.0。
注意:會四捨五入最小值,以匹配 decimals 特性。
訪問函數:
| double | minimum () const |
| void | setMinimum (double min ) |
另請參閱 decimals , setRange (),和 specialValueText .
此特性保持自鏇框的前綴
前綴會前置到顯示值開頭。典型用途是顯示度量單位 (或貨幣符號)。例如:
spinbox->setPrefix("$");
要關閉前綴顯示,把此特性設為空字符串。默認為無前綴。前綴不顯示,當 value () == minimum () 和 specialValueText () 有設置。
prefix() 返迴空字符串,若未設置前綴。
訪問函數:
| QString | prefix () const |
| void | setPrefix (const QString & prefix ) |
另請參閱 suffix (), setSuffix (), specialValueText (),和 setSpecialValueText ().
此特性保持步幅值
當用戶使用箭頭改變自鏇框的值時,值將按 singleStep 數量遞增/遞減。默認值為 1.0。將 singleStep 值設為小於 0,什麼都不做。
訪問函數:
| double | singleStep () const |
| void | setSingleStep (double val ) |
此特性保持步幅類型。
步幅類型可以是單步幅,或自適應十進製步幅。
訪問函數:
| QAbstractSpinBox::StepType | stepType () const |
| void | setStepType (QAbstractSpinBox::StepType stepType ) |
此特性保持自鏇框的後綴
後綴會被追加到顯示值末尾。典型用法是顯示度量單位 (或貨幣符號)。例如:
spinbox->setSuffix(" km");
要關閉後綴顯示,將此特性設為空字符串。默認無後綴。後綴不顯示對於 minimum () 若 specialValueText () 有設置。
若未設置後綴,suffix() 返迴空字符串。
訪問函數:
| QString | suffix () const |
| void | setSuffix (const QString & suffix ) |
另請參閱 prefix (), setPrefix (), specialValueText (),和 setSpecialValueText ().
此特性保持自鏇框的值
setValue() 將發射 valueChanged () 若新值不同於舊值。值特性擁有第 2 通知信號,其中包括自鏇框前綴和後綴。
注意:值會被四捨五入,所以它可以與當前小數位數設置一起顯示。
訪問函數:
| double | value () const |
| void | setValue (double val ) |
通知程序信號:
| void | valueChanged (double d ) |
另請參閱 decimals .
構造自鏇框采用 0.0 作為最小值,99.99 作為最大值,步幅值 1.0,及 2 位小數位數精度。初始值被設為 0.00。自鏇框擁有給定 parent .
另請參閱 setMinimum (), setMaximum (),和 setSingleStep ().
[signal]
void
QDoubleSpinBox::
textChanged
(const
QString
&
text
)
此信號被發射每當自鏇框文本改變時。新文本被傳入 text with prefix () 和 suffix ().
該函數在 Qt 5.14 引入。
[signal]
void
QDoubleSpinBox::
valueChanged
(
double
d
)
此信號被發射,每當自鏇框值改變時。新值被傳入 d .
注意: 通知程序信號對於特性 value .
注意: 信號 valueChanged 在此類中被重載。通過使用函數指針句法連接到此信號,Qt 提供用於獲得如此範例展示的函數指針的方便幫助程序:
connect(doubleSpinBox, QOverload<double>::of(&QDoubleSpinBox::valueChanged), [=](double d){ /* ... */ });
[虛擬]
QDoubleSpinBox::
~QDoubleSpinBox
()
析構函數。
[override virtual]
void
QDoubleSpinBox::
fixup
(
QString
&
input
) const
重實現: QAbstractSpinBox::fixup (QString &input) const.
方便函數能設置 minimum and maximum 值采用單函數調用。
注意:會四捨五入最大和最小值,以匹配 decimals 特性。
setRange(minimum, maximum);
相當於:
setMinimum(minimum); setMaximum(maximum);
將用於自鏇框的步幅類型設為 stepType ,其是單步幅或自適應十進製步幅。
自適應十進製步幅,意味著會連續調節步幅大小到十次方之一小於當前 value 。因此當值為 1100 時,步幅被設為 100,所以嚮上步進一次會遞增到 1200。對於 1200,嚮上步進會到 1300。對於負值,嚮下步進會從 -1100 到 -1200。
它還工作於任何十進製值,0.041 會增加到 0.042 通過步進一次。
考慮步進方嚮來處理邊緣情況,所以從 100 嚮下步進值到 99 而不是 90。這樣,嚮上步進緊接著嚮下步進 -- 反之亦然 -- 始終落在起始值上;99 -> 100 -> 99。
設置此值將導緻自鏇框無視值 singleStep ,雖然它有保留以便 singleStep 能生效,若自適應十進製步幅稍後被關閉。
注意: setter 函數對於特性 stepType .
該函數在 Qt 5.12 引入。
另請參閱 stepType ().
[虛擬]
QString
QDoubleSpinBox::
textFromValue
(
double
value
) const
此虛函數用於自鏇框,每當它需要顯示給定 value 。默認實現返迴的字符串包含 value 打印使用 QWidget::locale ().toString( value , QLatin1Char ('f'), decimals ()) 且會移除韆位分隔符,除非 setGroupSeparatorShown () 有設置。重實現可以返迴任何內容。
注意: QDoubleSpinBox 不會調用此函數對於 specialValueText () 且 prefix () 或 suffix () 應包括在返迴值中。
若重實現這,還可能需要重實現 valueFromText ().
另請參閱 valueFromText () 和 QLocale::groupSeparator ().
[override virtual]
QValidator::State
QDoubleSpinBox::
validate
(
QString
&
text
,
int
&
pos
) const
重實現: QAbstractSpinBox::validate (QString &input, int &pos) const.
[虛擬]
double
QDoubleSpinBox::
valueFromText
(const
QString
&
text
) const
此虛函數用於自鏇框,每當它需要解釋 text 由用戶作為值鍵入。
需要以非數字方式顯示自鏇框值的子類,需要重實現此函數。
注意: QDoubleSpinBox 處理 specialValueText () 單獨;此函數隻關心其它值。
另請參閱 textFromValue () 和 validate ().