QDoubleSpinBox Class

QDoubleSpinBox 类提供了一个可使用双倍的旋转框 widget。更多

Header: #include <QDoubleSpinBox>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
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,那么如果wrapping() 设置为 true,点击 "向上 "将得到 0。如果需要循环行为,请使用setWrapping() 。

显示的数值可以用任意字符串作为前缀或后缀,例如表示货币或度量单位。请参阅setPrefix() 和setSuffix()。自旋框中的文本可通过text() (包括任何prefix() 和suffix() )或cleanText() (没有prefix() 和suffix() ,也没有前导或尾部空白)获取。

除了数值范围外,通常还需要给用户一个特殊的(通常是默认的)选择。有关如何使用 QDoubleSpinBox 实现这一功能,请参阅setSpecialValueText() 。

注意: 除了最终的前缀和后缀内容外,QDoubleSpinBox 的显示值限制为 18 个字符。这一限制是为了使双倍旋转框即使在数值极大的情况下也能使用。

另请参阅 QSpinBox,QDateTimeEdit,QSlider旋转框示例

属性文档

[read-only] cleanText : const QString

该属性保存自旋框的文本,不包括任何前缀、后缀、前导或尾部空白。

访问功能:

QString cleanText() const

另请参阅 text,QDoubleSpinBox::prefix, 和QDoubleSpinBox::suffix

decimals : int

该属性保存自旋框的精度,单位为小数

设置自旋框在显示和解释双倍值时使用的小数位数。

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

注意:更改此属性后,最大值、最小值和数值可能会发生变化。

访问函数:

int decimals() const
void setDecimals(int prec)

maximum : double

该属性用于保存自旋框的最大值。

设置该属性时,如有必要,可调整minimum ,以确保范围保持有效。

默认最大值为 99.99。

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

访问功能:

double maximum() const
void setMaximum(double max)

另请参阅 decimalssetRange()。

minimum : double

该属性用于保存自旋框的最小值。

设置该属性时,如有必要,maximum ,以确保范围保持有效。

默认最小值为 0.0。

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

访问函数:

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");

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

如果未设置后缀,则 suffix() 返回空字符串。

访问函数:

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

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

value : double

此属性保存自旋框的值

如果新值与旧值不同,setValue() 将发出valueChanged() 信号。value 属性有第二个通知信号,其中包括自旋框的前缀和后缀。

注意:值将被四舍五入,以便在显示时使用当前的小数点设置。

访问功能:

double value() const
void setValue(double val)

通知信号:

void valueChanged(double d)

另请参见 decimals

成员函数文档

[explicit] QDoubleSpinBox::QDoubleSpinBox(QWidget *parent = nullptr)

构建一个最小值为 0.0、最大值为 99.99、步长为 1.0、精度为小数点后 2 位的旋转方框。初始值设置为 0.00。自旋框的给定值为parent

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

[virtual noexcept] QDoubleSpinBox::~QDoubleSpinBox()

毁灭者

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

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

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

方便函数,只需调用一次即可设置minimummaximum 值。

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

setRange(minimum, maximum);

等同于:

setMinimum(minimum);
setMaximum(maximum);

另请参阅 minimummaximum

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 也会生效。

注: 属性stepType 的设置函数。

另请参阅 stepType() 。

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

每当旋转框的文本发生变化时,就会发出该信号。新文本通过prefix() 和suffix() 传入text

[virtual] QString QDoubleSpinBox::textFromValue(double value) const

当自旋框需要显示给定的value 时,就会使用该虚拟函数。默认实现返回的字符串包含使用QWidget::locale() 打印的valuetoString(value,u'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.

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

每当自旋框的值发生变化时,就会发出该信号。新值将在d 中传递。

注: 用于属性value 的通知信号。

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

当旋转框需要将用户输入的text 解释为数值时,就会使用这个虚拟函数。

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

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

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

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.