QDoubleSpinBox 類

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 ,和 自鏇框範例 .

特性文檔編製

cleanText : const QString

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

訪問函數:

QString cleanText () const

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

decimals : int

此特性保持自鏇盒的精度 (以小數位數錶示)

將用於顯示和解釋,自鏇框雙精度數的小數位數設為多少。

警告: 最大值對於 decimals 是 DBL_MAX_10_EXP + DBL_DIG (即 323),因為 double 類型的局限性。

注意:最大、最小及值可能改變,因更改此特性導緻。

訪問函數:

int decimals () const
void setDecimals (int prec )

maximum : double

此特性保持自鏇框的最大值

當設置此特性 minimum 有必要調節,以確保範圍仍然有效。

默認最大值為 99.99。

注意:會四捨五入最大值,以匹配 decimals 特性。

訪問函數:

double maximum () const
void setMaximum (double max )

另請參閱 decimals and setRange ().

minimum : double

此特性保持自鏇框的最小值

當設置此特性 maximum 有必要調節,以確保範圍仍然有效。

默認最小值為 0.0。

注意:會四捨五入最小值,以匹配 decimals 特性。

訪問函數:

double minimum () const
void setMinimum (double min )

另請參閱 decimals , setRange (),和 specialValueText .

prefix : QString

此特性保持自鏇框的前綴

前綴會前置到顯示值開頭。典型用途是顯示度量單位 (或貨幣符號)。例如:

spinbox->setPrefix("$");
					

要關閉前綴顯示,把此特性設為空字符串。默認為無前綴。前綴不顯示,當 value () == minimum () 和 specialValueText () 有設置。

prefix() 返迴空字符串,若未設置前綴。

訪問函數:

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

另請參閱 suffix (), setSuffix (), specialValueText (),和 setSpecialValueText ().

singleStep : double

此特性保持步幅值

當用戶使用箭頭改變自鏇框的值時,值將按 singleStep 數量遞增/遞減。默認值為 1.0。將 singleStep 值設為小於 0,什麼都不做。

訪問函數:

double singleStep () const
void setSingleStep (double val )

stepType : StepType

此特性保持步幅類型。

步幅類型可以是單步幅,或自適應十進製步幅。

訪問函數:

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

suffix : QString

此特性保持自鏇框的後綴

後綴會被追加到顯示值末尾。典型用法是顯示度量單位 (或貨幣符號)。例如:

spinbox->setSuffix(" km");
					

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

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

訪問函數:

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

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

value : double

此特性保持自鏇框的值

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

注意:值會被四捨五入,所以它可以與當前小數位數設置一起顯示。

訪問函數:

double value () const
void setValue (double val )

通知程序信號:

void valueChanged (double d )

另請參閱 decimals .

成員函數文檔編製

QDoubleSpinBox:: QDoubleSpinBox ( QWidget * parent = nullptr)

構造自鏇框采用 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.

void QDoubleSpinBox:: setRange ( double minimum , double maximum )

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

注意:會四捨五入最大和最小值,以匹配 decimals 特性。

setRange(minimum, maximum);
					

相當於:

setMinimum(minimum);
setMaximum(maximum);
					

另請參閱 minimum and maximum .

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

將用於自鏇框的步幅類型設為 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 ().