Qt应用开发(基础篇)——数值微调输入框 QAbstractSpinBox、QSpinBox、QDoubleSpinBox

一、前言

       QAbstractSpinBox是全部微调输入框的父类,这是一种允许用户通过点击上下箭头按钮或输入数字来调整数值的图形用户界面控件,父类提供了当前值text、对齐方式align、只读readOnly等通用属性和方法。

        QSpinBox整数微调输入框,设计用来处理整数的输入。 

        

        QDoubleSpinBox双精度微调输入框,设计用来处理float型和double型的输入。

        

二、QAbstractSpinBox类

1、accelerated

        该属性表示是否启用加速。当按住上下键的时候当前值会增加/减少,启用此属性,则加速。

bool isAccelerated() const        //获取是否加速
void setAccelerated(bool on)      //设置是否加速

2、acceptableInput

        该属性表示当前输入是否满足验证。

bool hasAcceptableInput() const    //获取是否满足

3、alignment

        该属性表示对齐方式。默认靠左对齐 Qt::AlignLeft。

Qt::Alignment alignment() const        //获取对齐方式
void setAlignment(Qt::Alignment flag)  //设置对齐方式

4、buttonSymbols

        该属性标识按钮的样式。

QAbstractSpinBox::ButtonSymbols buttonSymbols() const        //获取样式
void setButtonSymbols(QAbstractSpinBox::ButtonSymbols bs)    //设置样式
  • QAbstractSpinBox::UpDownArrow          //上下样式
  • QAbstractSpinBox::PlusMinus                 //加减样式
  • QAbstractSpinBox::NoButtons                 //不显示按钮

5、correctionMode

        该属性表示校正模式。

QAbstractSpinBox::CorrectionMode correctionMode() const        //获取校正模式
void setCorrectionMode(QAbstractSpinBox::CorrectionMode cm)    //设置校正模式
  • QAbstractSpinBox::CorrectToPreviousValue                //恢复到最后一个有效值
  • QAbstractSpinBox::CorrectToNearestValue                 //恢复到最近的有效值

6、frame

        该属性表示是否绘制框。

bool hasFrame() const        //获取值
void setFrame(bool)          //设置值

7、keyboardTracking

        该属性表示是否启用键盘跟踪。如果启用,则在从键盘输入新值时,spinbox会发出valueChanged()和textChanged()信号。

        例如:当用户通过输入6,0和0输入值600时,spinbox会发出3个信号,分别为6,60和600。如果键盘跟踪被禁用,则spinbox在输入时不会发信号。当回车键被按下时,当键盘焦点丢失时,或者当其他spinbox功能被使用时,它会稍后发出信号。        

8、readOnly

        该属性表示是否只读。只读模式下不可编辑,可以复制,不显示光标。

bool isReadOnly() const        //获取是否只读
void setReadOnly(bool r)       //设置是否只读

9、showGroupSeparator

        该属性保留是否启用千位分隔符。默认false。

        

10、specialValueText

        该属性保存特殊文本,如果设置了此值,当当前值等于minimum()时,将显示此文本而不是数字值。如果要关闭此功能,设置空字符即可。

QString specialValueText() const                //获取特殊文本
void setSpecialValueText(const QString &txt)    //设置特殊文本

         实例:显示一个0-100%的输入框,当显示0%的时候显示为自动。

QSpinBox *zoomSpinBox = new QSpinBox;
zoomSpinBox->setRange(0, 100);
zoomSpinBox->setSingleStep(10);
zoomSpinBox->setSuffix("%");
zoomSpinBox->setSpecialValueText(tr("Automatic"));
zoomSpinBox->setValue(100);

         此程序当输入为0的时候,将自动变化文本为“Automatic”,textChanged()信号中得到的值为value为0,text值为“Automatic”

           

        注意:在Q5.9.6中,如果是按向下箭头减少到0%,textChanged()得到的字符串是“Automatic”,如果是键盘输入0,输入的一瞬间就触发textChanged()信号得到“0%”,然后文本自动变化成“Automatic”,这时候并没有在次触发信号,这是一个版本Bug。

11、text 

        该属性保存输入框当前文本。

QString text() const   //获取当前文本

12、wrapping

        该属性表示取值范围是否头尾相连,最大值向上回到最小值,最小值向下回到最大值。

bool wrapping() const            //获取是否启用值环绕
void setWrapping(bool w)         //设置是否启用值环绕

13、信号

void editingFinished()        //输入结束时候触发

二、QSpinBox类

1、cleanText

        该属性保存编辑框的文本,但不包括任何前缀、后缀、前导或尾随空格。setSuffix("%")后缀多一个“%”,text()得到“40%”,cleanText()得到“40”。

2、displayIntegerBase

        该属性表示显示值的进制,默认十进制。

int displayIntegerBase() const            //获取进制
void setDisplayIntegerBase(int base)      //设置进制

3、maximum

        该属性保存预设的最大值。

int maximum() const            //获取预设最大值
void setMaximum(int max)       //设置预设最大值

4、minimum

        该属性保存预设的最小值。

int minimum() const            //获取预设最小值
void setMinimum(int max)       //设置预设最小值

5、prefix

        该属性保存文本前缀。如果设置了specialValueText,值为最小值的时候显示特殊文本,这时候前缀不显示。

QString prefix() const                //获取预设前缀
void setPrefix(const QString &prefix) //设置预设前缀

6、suffix

        该属性保存文本后缀。如果设置了specialValueText,值为最小值的时候显示特殊文本,这时候后缀不显示。

QString suffix() const                    //获取预设后缀
void setSuffix(const QString &suffix)     //设置预设后缀

7、singleStep

        该属性表示步长,上下按钮根据此步长加减,默认为1。

int singleStep() const        //获取步长
void setSingleStep(int val)   //设置步长

8、value

        该属性标识当前值。

int value() const        //获取当前值
void setValue(int val)   //设置当前值

9、其他方法

void setRange(int minimum, int maximum);//设置预设最大值和最小值

10、信号

void textChanged(const QString &text)    //文本发生变化时触发
void valueChanged(int i)                 //值发生变化时触发

三、QDoubleSpinBox类

1、decimals

        该属性表示精度,用于显示小数数目。小数的最大值是DBL_MAX_10_EXP + DBL_DIG(即323),如果设置范围超过,也会被强行拉回来。

int decimals() const        //获取精度
void setDecimals(int prec)  //设置精度

        QDoubleSpinBox使用起来和QSpinBox除了表示的类型不同,几乎一样,所以它也一样拥有cleanTextmaximumminumumprefixsingleStepsuffixvalue属性,这些直接参考上文,有差异的无非就是int改为double。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

波塞冬~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值