QDoubleSpinBox 类

The QDoubleSpinBox class provides a spin box widget that takes doubles. 更多...

头: #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 valueChanged (double d )
void valueChanged (const QString & text )

静态公共成员

const QMetaObject staticMetaObject

额外继承成员

详细描述

The QDoubleSpinBox class provides a spin box widget that takes doubles.

QDoubleSpinBox allows the user to choose a value by clicking the up and down buttons or by pressing Up or Down on the keyboard to increase or decrease the value currently displayed. The user can also type the value in manually. The spin box supports double values but can be extended to use different strings with validate (), textFromValue () 和 valueFromText ().

Every time the value changes QDoubleSpinBox emits two valueChanged () signals, one taking providing a double and the other a QString QString overload provides the value with both prefix () 和 suffix ()。可以抓取当前值采用 value () 和设置采用 setValue ().

注意: QDoubleSpinBox will round numbers so they can be displayed with the current precision. In a QDoubleSpinBox with decimals set to 2, calling setValue (2.555) 将导致 value () 返回 2.56。

点击向上和向下按钮 (或使用键盘加速键的向上和向下箭头) 将递增 (或递减) 当前值按步幅大小 singleStep ()。若想要改变此行为,可以重实现虚函数 stepBy ()。最小和最大值及步幅大小的设置可以使用某个构造函数,且稍后可以改变采用 setMinimum (), setMaximum () 和 setSingleStep ()。自旋框默认拥有 2 位小数精度,但可以改变这使用 setDecimals ().

Most spin boxes are directional, but QDoubleSpinBox can also operate as a circular spin box, i.e. if the range is 0.0-99.9 and the current value is 99.9, clicking "up" will give 0 if wrapping () 被设为 true。使用 setWrapping () 若想要循环行为。

可以为显示值前置和追加任意字符串指示,例如,货币 (或度量单位)。见 setPrefix () 和 setSuffix ()。自旋框文本的检索是采用 text () (包括任何 prefix () 和 suffix ()),或采用 cleanText () (没有 prefix (),没有 suffix () 且没有前导或结尾空白)。

经常期望对用户给出特殊 (常常默认) 选择,除数值范围外。见 setSpecialValueText () for how to do this with QDoubleSpinBox .

注意: The displayed value of the QDoubleSpinBox is limited to 18 characters in addition to eventual prefix and suffix content. This limitation is used to keep the double spin box usable even with extremely large values.

另请参阅 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 )
void valueChanged (const QString & text )

另请参阅 decimals .

成员函数文档编制

QDoubleSpinBox:: QDoubleSpinBox ( QWidget * parent = nullptr)

构造自旋框采用 0.0 作为最小值,99.99 作为最大值,步幅值 1.0,及 2 位小数位数精度。初始值被设为 0.00。自旋框拥有给定 parent .

另请参阅 setMinimum (), setMaximum (),和 setSingleStep ().

[虚拟] QDoubleSpinBox:: ~QDoubleSpinBox ()

析构函数。

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

重实现自 QAbstractSpinBox::fixup ().

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 能生效,若自适应十进制步幅稍后被关闭。

该函数在 Qt 5.12 引入。

注意: setter 函数对于特性 stepType .

另请参阅 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 ().

[signal] void QDoubleSpinBox:: valueChanged ( double d )

此信号被发射,每当自旋框值改变时。新值被传入 d .

注意: 信号 valueChanged 在此类中被重载。通过使用函数指针句法连接到此信号,Qt 提供用于获得如此范例展示的函数指针的方便帮助程序:

connect(doubleSpinBox, QOverload<double>::of(&QDoubleSpinBox::valueChanged),
    [=](double d){ /* ... */ });
					

注意: 通知程序信号对于特性 value .

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

这是重载函数。

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

注意: 信号 valueChanged 在此类中被重载。通过使用函数指针句法连接到此信号,Qt 提供用于获得如此范例展示的函数指针的方便帮助程序:

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

注意: 通知程序信号对于特性 value .

[虚拟] double QDoubleSpinBox:: valueFromText (const QString & text ) const

此虚函数用于自旋框,每当它需要解释 text 由用户作为值键入。

需要以非数字方式显示自旋框值的子类,需要重实现此函数。

注意: QDoubleSpinBox 处理 specialValueText () 单独;此函数只关心其它值。

另请参阅 textFromValue () 和 validate ().