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