QDoubleSpinBox 类提供采用双精度的自旋框 Widget。 更多...
头: | #include <QDoubleSpinBox> |
CMake: |
find_package(Qt6 COMPONENTS Widgets REQUIRED)
target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
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 ,和 自旋框范例 .
[read-only]
cleanText
: const
QString
此特性保持自旋框的文本,不包括任何前缀、后缀、或前导/结尾空白。
访问函数:
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, since 5.14]
void
QDoubleSpinBox::
textChanged
(const
QString
&
text
)
此信号被发射每当自旋框文本改变时。新文本被传入 text with prefix () 和 suffix ().
该函数在 Qt 5.14 引入。
[signal]
void
QDoubleSpinBox::
valueChanged
(
double
d
)
此信号被发射,每当自旋框值改变时。新值被传入 d .
注意: 通知程序信号对于特性 value .
[虚拟]
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);
[since 5.12]
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 ().