QDoubleSpinBox Class
QDoubleSpinBox类提供了一个接受双精度浮点数的spinbox小部件。
Header | #include < QDoubleSpinBox > |
---|---|
qmake | QT += widgets |
Inherits | QAbstractSpinBox |
Inherited By |
详细说明
QDoubleSpinBox允许用户通过单击向上和向下按钮或通过按键盘上的向上或向下键来增加或减少当前显示的值来选择值。用户也可以手动输入值。数字调整框支持double 值,但可以扩展为使用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() 进行更改。spinbox的默认精度为2位小数,但可以使用setDecimals() 进行更改。
大多数数字调整框是定向的,但QDoubleSpinBox也可以作为圆形数字调整框运行,即如果范围为0.0-99.9,当前值为99.9,如果wrapping() 设置为true,则单击“向上”将得到0。如果需要循环行为,请使用setWrapping() 。
所显示的值可以在前面加上表示货币或度量单位的任意字符串。请参见setPrefix() 和setSuffix() 。数字调整框中的文本使用text() (setPrefix() 和 setSuffix())检索,或使用cleanText() (没有setPrefix() 、setSuffix() 和前导或尾随空格)。
除了数值范围之外,通常还需要给用户一个特殊的(通常是默认的)选择。有关如何使用QDoubleSpinBox执行此操作的信息,请参见setSpecialValueText() 。
注意:除了最终的前缀和后缀内容外,QDoubleSpinBox的显示值限制为18个字符。此限制用于使double数字调整框即使具有非常大的值也可用。
属性
-
cleanText: const QString 数字调整框的文本,不包括任何前缀、后缀、前导或尾随空格
Access functions:
- QString cleanText() const
-
decimals: int 此属性保留数字调整框的精度(以小数为单位)
设置微调框用于显示和解释双精度的小数位数。
警告:由于double类型的限制,小数的最大值为 DBL_MAX_10_EXP + DBL_DIG (ie. 323) 。
注意:最大值、最小值和值可能会因更改此属性而更改。Access functions:
- int decimals() const
- void setDecimals(int prec)
-
maximum: double 最大值
Access functions:
- double maximum() const
- void setMaximum(double max)
-
minimum: double 最小值
Access functions:
- double minimum() const
- void setMinimum(double min)
-
prefix: QString 数字调整框的前缀
Access functions:
- QString prefix() const
- void setPrefix(const QString &prefix)
-
singleStep: double 步长值
Access functions:
- double singleStep() const
- void setSingleStep(double val)
-
stepType: StepType 步长类型
步长类型可以是单步或自适应十进制步长。
Access functions:
- QAbstractSpinBox::StepType stepType() const
- void setStepType(QAbstractSpinBox::StepType stepType)
-
suffix: QString 数字调整框的后缀
Access functions:
- QString suffix() const
- void setSuffix(const QString &suffix)
-
value: double 数字调整框的值
如果新值与旧值不同,setValue() 将发出valueChanged() 。value属性有第二个通知信号,其中包括数字调整框的前缀和后缀。
注:该值将四舍五入,因此可以使用当前的小数设置进行显示。Access functions:
- double value() const
- void setValue(double val)
Notifier signal:
- void valueChanged(double d)
公共函数
构造和析构
- QDoubleSpinBox(QWidget *parent = nullptr)
- virtual ~QDoubleSpinBox()
属性相关
- QString cleanText() const
- int decimals() const
- void setDecimals(int prec)
- double maximum() const
- void setMaximum(double max)
- double minimum() const
- void setMinimum(double min)
- QString prefix() const
- void setPrefix(const QString &prefix)
- double singleStep() const
- void setSingleStep(double val)
- QAbstractSpinBox::StepType stepType() const
- void setStepType(QAbstractSpinBox::StepType stepType)
- QString suffix() const
- void setSuffix(const QString &suffix)
- double value() const
特殊
-
void setRange(double minimum, double maximum) 设置范围
-
virtual QString textFromValue(double value) const
每当需要显示给定值时,数字调整框就会使用此虚拟函数。默认实现返回一个字符串,其中包含使用QWidget::locale() .toString(value, QLatin1Char(‘f’), decimals()) 打印的值,并将删除千位分隔符,除非设置了setGroupSeparatorShown() 。重新执行可能会返回任何内容。
注意:QDoubleSpinBox不会为specialValueText() 调用此函数,并且返回值中不应包含prefix() 和suffix() 。
如果重新实现此功能,可能还需要重新实现valueFromText() 。
-
virtual double valueFromText(const QString &text) const
每当数字调整框需要将用户输入的文本解释为值时,就会使用此虚拟函数。
需要以非数字方式显示数字调整框值的子类需要重新实现此函数。
注意:QDoubleSpinBox单独处理specialValueText() ;此函数只与其他值有关。
重写的公共函数
- 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)