2021.6.5:QT——QSpinBox使用
QSpinBox用于整数的显示和输入,一般显示十进制,也可以显示二进制、十六进制,而且可以在显示框中增加前缀或后缀。
QDoubleSpinBox用于浮点数的显示和输入,可以显示小数位数,前缀或后缀。
实例samp4_3演示了QSpinBox和QDoubleSpinBox这两个组件的使用,下图是程序运行界面,该程序使用QSpinBox和QDoubleSpinBox作为数字输入输出组件。
QSpinBox和QDoubleSpinBox都是QAbstractSpinBox的子类,具有大多数相同的属性,只是参数类型不同。在UI设计器里进行界面设计时,就可以设置这些属性。QSpinBox和QDoubleSpinBox的主要属性见下表:
属性 | 描述 |
prefix | 前缀,例如“$” |
suffix | 后缀,例如“kg” |
minimum | 数值范围最小值,如0 |
maximum | 数值范围最大值,如255 |
singlestep | 每次按钮改变值 |
value | 当前显示值 |
displayIntegerBase | QSpinBox特有属性,显示进制,例如2就表示2进制 |
decimals | QDoubleSpinBox特有属性,显示数值的小数位数。 |
属性在类中有一个get与set函数,如QDoubleSpinBox的decimals属性,读取函数为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、get与set QSpinBox内容的方法,以对象名为spinNum的QSpinBox和对象名为spinDbNum的QDoubleSpinBox为例:
int num = ui->spinNum->value(); ui->spinNum->setValue( num*10 ); int dbnum = ui->spinDbNum->value(); ui->spinDbNum->setValue ( dbnum*10 );
在用setValue()为这两个控件设置数值时,不需要进制转换,显示的效果(前后缀、进制、小数位数)完全由预定好的控件属性来决定。