QDoubleSpinBox 类

QDoubleSpinBox 类提供了一个可以接受双精度浮点数的滚动框小部件。 更多...

头文件 #include <QDoubleSpinBox>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承了 QAbstractSpinBox

属性

公共函数

QDoubleSpinBox(QWidget *parent = nullptr)
virtual~QDoubleSpinBox()
QStringcleanText() const
intdecimals() const
doublemaximum() const
doubleminimum() const
QStringprefix() const
voidsetDecimals(int prec)
voidsetMaximum(double max)
voidsetMinimum(double min)
voidsetPrefix(const QString &prefix)
voidsetRange(double minimum, double maximum)
voidsetSingleStep(double val)
voidsetStepType(QAbstractSpinBox::StepType stepType)
voidsetSuffix(const QString &suffix)
doublesingleStep() const
QAbstractSpinBox::StepTypestepType() const
QStringsuffix() const
virtual QStringtextFromValue(double value) const
doublevalue() const
virtual doublevalueFromText(const QString &text) const

重写公共函数

virtual voidfixup(QString &input) const override
virtual QValidator::Statevalidate(QString &text, int &pos) const override

公共槽

voidsetValue(double val)

信号

voidtextChanged(const QString &text)
voidvalueChanged(double d)

详细信息

QDoubleSpinBox 允许用户通过点击上下按钮,或按键盘上的向上和向下键来增加或减少当前显示的值,或者手动输入值。可以扩展到使用不同的字符串通过validate(),textFromValue() 和 valueFromText() 来支持double值。

每次值改变时,QDoubleSpinBox 都会发出 valueChanged() 和 textChanged() 信号,前者提供一个double值,而后者提供一个 QStringtextChanged() 信号提供了带有 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" 时,如果 wrapping() 设置为 true,则将给出 0。如果您想实现环形行为,请使用 setWrapping()。

显示的值可以前缀和后缀任意字符串,例如货币或计量单位。有关信息,请参阅 setPrefix() 和 setSuffix()。自旋框中的文本可以通过 text()(包括任何 prefix() 和 suffix())检索,或者通过 cleanText()(它没有 prefix(),没有 suffix() 和首尾空格)。

经常需要提供在数值范围的数值选择之外的特定(通常是默认)选择。有关 QDoubleSpinBox 如何操作的信息,请参阅 setSpecialValueText()。

注意:除了可能的文本前缀和后缀之外,QDoubleSpinBox 显示的值限制为 18 个字符。此限制用于保持大数值的有效显示。

另请参阅 QSpinBoxQDateTimeEditQSlider微步示例

属性文档

[只读]cleanText : const QString

此属性持有所选微步的文本,不包括任何前缀、后缀、前导或尾随空格。

访问函数

QStringcleanText() const

另请参阅 textQDoubleSpinBox::prefixQDoubleSpinBox::suffix

decimals : int

此属性保存微步的精度,即小数位数。

设置微步用于显示和解释双精度值的小数位数。

警告:由于双精度类型的限制,decimals 的最大值为 DBL_MAX_10_EXP + DBL_DIG(即 323)。

注意:改变此属性可能会导致最大值、最小值和值发生变化。

访问函数

intdecimals() const
voidsetDecimals(int prec)

maximum : double

此特性存储微步的最大值

在设置此特性时,如果需要调整minimum以确保范围处于有效状态。

默认最大值是 99.99。

注意:最大值将四舍五入以匹配小数特性。

访问函数

doublemaximum() const
voidsetMaximum(double max)

另请参阅 decimalssetRange

minimum : double

此特性存储微步的最小值

设置此特性时,需要根据需要调整maximum以确保范围有效。

默认最小值是 0.0。

注意:最小值将四舍五入以匹配小数特性。

访问函数

doubleminimum() const
voidsetMinimum(double min)

另请参阅 decimalssetRange() 和 specialValueText

prefix : QString

此特性存储微步的前缀

前缀附加到显示值的起始位置。典型的用法是显示测量单位或货币符号。例如

spinbox->setPrefix("$");

要关闭前缀显示,将此特性设置为空字符串。默认情况下没有前缀。当 value() == minimum() 并设置specialValueText() 时,不显示前缀。

如果没有设置前缀,则前缀()返回一个空字符串。

访问函数

QStringprefix() const
voidsetPrefix(const QString &prefix)

另请参阅 suffixsetSuffixspecialValueTextsetSpecialValueText

singleStep : double

此特性存储步长值

当用户使用箭头键更改微调框的值时,该值将以singleStep的数量递增或递减。默认值为1.0。将singleStep的值设置为小于0不会产生任何作用。

访问函数

doublesingleStep() const
voidsetSingleStep(double val)

stepType : StepType

此属性持有步进类型。

步进类型可以是单步或自适应小数步。

访问函数

QAbstractSpinBox::StepTypestepType() const
voidsetStepType(QAbstractSpinBox::StepType stepType)

suffix : QString

此属性保持微调框的后缀。

后缀将附加到显示值的末尾。典型用途是显示度量单位或货币符号。例如

spinbox->setSuffix(" km");

要关闭后缀显示,请将此属性设置为空字符串。默认情况下没有后缀。如果设置了specialValueText(),则不会显示minimum()的后缀。

如果没有设置后缀,suffix()将返回一个空字符串。

访问函数

QStringsuffix() const
voidsetSuffix(const QString &suffix)

另请参阅 prefix()、setPrefix()、specialValueText() 和 setSpecialValueText

value : double

此属性持有微调框的值。

当新值与旧值不同时,setValue()将发出valueChanged信号。值属性具有第二个通知信号,它包含微调框的前缀和后缀。

注意:该值将被四舍五入,以便能够使用当前的十进制设置进行显示。

访问函数

doublevalue() const
voidsetValue(double val)

通知信号

voidvalueChanged(double d)

另请参阅 decimals

成员函数文档

[显式] QDoubleSpinBox::QDoubleSpinBox(QWidget *parent = nullptr)

构建一个具有最小值0.0和最大值99.99的微调框,步值1.0和精度2位十进制的微调框。初始值设置为0.00。微调框具有给定的父元素

另请参阅 setMinimum()、setMaximum() 和 setSingleStep()。

[虚拟 noexcept] QDoubleSpinBox::~QDoubleSpinBox()

析构器。

[覆盖虚拟] void QDoubleSpinBox::fixup(QString &input) const

重新实现:QAbstractSpinBox::fixup(QString & input) const。

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

单次函数调用即可设置 最小最大 值的便利函数。

注意:最大值和最小值将被四舍五入以匹配小数属性。

setRange(minimum, maximum);

等价于

setMinimum(minimum);
setMaximum(maximum);

另见minimummaximum.

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

为滚动框设置步进类型为 stepType,即单步或自适应小数步进。

自适应小数步进意味着步进大小将不断调整到当前 以下的十的幂。因此,当值为 1100 时,步进设置为 100,因此上一步增加使其变为 1200。对于 1200 ,上一步将其增加到 1300。对于负值,从 -1100 减少到 -1200。

这也适用于任何小数值,0.041 通过一次步进增加到 0.042。

考虑步进方向以处理边缘情况,因此从 100 减少到 99 而不是 90。因此,上一步后跟下一步或反之亦然始终落在起始值;99 -> 100 -> 99。

设置此选项将导致滚动框忽略 singleStep 的值,尽管它被保留下来,以便在以后关闭自适应小数步进时 singleStep 生效。

注意:属性 stepType 的设置函数。

另见stepType().

[信号] void QDoubleSpinBox::textChanged(const QString &text)

每当滚动框的文本发生变化时,都会发出此信号。新的文本在 text 中传递,附带 prefix() 和 suffix().

[虚拟] QString QDoubleSpinBox::textFromValue(double value) const

此虚拟函数由滚动框用来显示给定的 。默认实现返回一个包含 value 的字符串,使用 QWidget::locale().toString(value, u'f', decimals()) 并在未设置 setGroupSeparatorShown() 时删除千位分隔符。重写可以实现任何内容。

注意:QDoubleSpinBox 对于 specialValueText() 不调用此函数,且不应在返回值中包含 prefix() 或 suffix().

如果您重写此函数,您可能还需要重写 valueFromText().

另见valueFromText() 和 QLocale::groupSeparator().

[重载虚拟] QValidator::State QDoubleSpinBox::validate(QString &text, int &pos) const

重写:QAbstractSpinBox::validate(QString &input, int &pos) const.

[信号] void QDoubleSpinBox::valueChanged(double d)

每当微调框的值改变时,都会发射此信号。新值通过d传递。

注意:属性value的通知信号。

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

此虚函数由微调框在需要将用户输入的文本作为值进行解释时使用。

需要以非数字方式显示微调框值的子类需要重写此函数。

注意:QDoubleSpinBox单独处理specialValueText(),此函数只涉及其他值。

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

© 2024 Qt公司。此处包含的文档贡献的版权属于各自的所有者。所提供的文档受GNU Free Documentation License版本1.3的条款许可,由自由软件基金会发布。Qt及其相关标志是芬兰和/或在其他国家的Qt公司的商标。所有其他商标均为各自所有者的财产。