2021.6.5:QT——QSpinBox使用

QSpinBox用于整数的显示和输入,一般显示十进制,也可以显示二进制、十六进制,而且可以在显示框中增加前缀或后缀。

QDoubleSpinBox用于浮点数的显示和输入,可以显示小数位数,前缀或后缀。

实例samp4_3演示了QSpinBox和QDoubleSpinBox这两个组件的使用,下图是程序运行界面,该程序使用QSpinBox和QDoubleSpinBox作为数字输入输出组件。

 

 

 QSpinBoxQDoubleSpinBox都是QAbstractSpinBox的子类,具有大多数相同的属性,只是参数类型不同。在UI设计器里进行界面设计时,就可以设置这些属性。QSpinBoxQDoubleSpinBox的主要属性见下表:

属性 描述
prefix 前缀,例如“$
suffix 后缀,例如“kg
minimum 数值范围最小值,如0
maximum 数值范围最大值,如255
singlestep 每次按钮改变值
value 当前显示值
displayIntegerBase QSpinBox特有属性,显示进制,例如2就表示2进制
decimals QDoubleSpinBox特有属性,显示数值的小数位数。

属性在类中有一个getset函数,如QDoubleSpinBoxdecimals属性,读取函数为decimals()设置函数为setDecimals(int),这里的get与set都是对进制而言的。

如果要获取设置每个spinBox中的值,要用到value()setValue()函数。而且与我们上一节所讲的文本输入框不同,这里获取到的值本身就是int(对QSpinBox而言)或double(对QDoubleSpinBox而言),所以可以直接用:

int n = ui->spinBox1->value();
float f = ui->doublespinBox1->value();

设置时也可以直接设置value,而不用说明进制参数,控件会自动输出为它的“进制”属性对应的数值,就像下边这样:

int val = 10;
ui->spinBox1->setValue(val);

使用QSpinBox和QDoubleSpinBox进行数值量的输入输出很方便,下面是上图中“计算”按钮和“十进制”按钮后面的槽函数代码:

void Widget::on_btnCal_clicked()
{
    int num = ui->spinNum->value();
    float price = ui->spinPrice->value();
    float total = num*price;
    ui->spinTotal->setValue(total);
}


void Widget::on_btnConv1_clicked()
{
    int val = ui->spinDec->value();
    ui->spinBin->setValue(val);
    ui->spinHex->setValue(val);
}

在使用QSpinBox和QDoubleSpinBox读取和设置数值时,无需做字符串数值之间的转换,也无需做进制转换,其显示效果(前缀后缀、进制、小数位数)自动按照预定好的效果属性来显示,这对数值的输入输出是非常方便的。

总结

1、QSpinBox用于整数的显示和输入、QDoubleSpinBox用于浮点数的显示和输入;

2、getset QSpinBox内容的方法,以对象名为spinNumQSpinBox和对象名为spinDbNumQDoubleSpinBox为例:

int num = ui->spinNum->value();
ui->spinNum->setValue( num*10 );

int dbnum = ui->spinDbNum->value();
ui->spinDbNum->setValue ( dbnum*10 );

在用setValue()为这两个控件设置数值时,不需要进制转换,显示的效果(前后缀、进制、小数位数)完全由预定好的控件属性来决定。

posted @ 2021-06-05 21:03  ShineLe  阅读(1491)  评论(0)    收藏  举报