【QT】SpinBox的使用

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

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

    QSpinBox和QDoubleSpinBox都是QAbstractSpinBox的子类,具有大多数相同的属性,只是参数类型不同。

提示:一个属性在类的接口中一般有一个读取函数和一个设置函数,如QDoubleSpinBox的decimals属性,读取属性值的函数为int decimals(),设置属性值的函数为void setDecimals(int prec)。

    在使用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_btnBin_clicked()
{
    //读取二进制数,以其他进制显示
    int val = ui->spinBin->value();
    ui->spinDec->setValue(val);
    ui->spinHex->setValue(val);
}

应用示例:

  (1) main.cpp文件

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

(2)widget.h文件:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private slots:
    void on_btnCal_clicked(); //计算按键 clicked()响应

    void on_btnDec_clicked();//读十进制数再用其他进制显示 的按键的 clicked()响应

    void on_btnBin_clicked();//读二进制数再用其他进制显示 的按键的 clicked()响应

    void on_btnHex_clicked();//读十六进制数再用其他进制显示 的按键的 clicked()响应

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include    <QString>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
//“数量”和“单价”两个SpinBox的valueChanged()信号与on_btnCal_clicked()槽关联
    QObject::connect(ui->spinNum,SIGNAL(valueChanged(int)),this,SLOT(on_btnCal_clicked()));  //
    QObject::connect(ui->spinPrice,SIGNAL(valueChanged(double)),this,SLOT(on_btnCal_clicked()));


    QObject::connect(ui->spinDec,SIGNAL(valueChanged(int)),
                     this,SLOT(on_btnDec_clicked()));//spinDec 十进制显示的SpinBox


    QObject::connect(ui->spinBin,SIGNAL(valueChanged(int)),
                     this,SLOT(on_btnBin_clicked()));//spinBin 二进制显示的SpinBox


    QObject::connect(ui->spinHex,SIGNAL(valueChanged(int)),
                     this,SLOT(on_btnHex_clicked()));//spinHex 十六进制显示的SpinBox
}

Widget::~Widget()
{
    delete ui;
}

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_btnDec_clicked()
{ //读取十进制,以其他进制显示
    int val;
    val=ui->spinDec->value();//读取十进制数
    //无需进制转换,前缀在设置好之后,就自动按照效果进行显示
    ui->spinBin->setValue(val); //设置数值即可,自动以二进制显示
    ui->spinHex->setValue(val); //设置数值即可,自动以十六进制显示
}

void Widget::on_btnBin_clicked()
{ //读取二进制,以其他进制显示
    int val=ui->spinBin->value();//读取spinBin里的二进制数,得到整数
    ui->spinDec->setValue(val);//设置数值即可,自动以十进制显示
    ui->spinHex->setValue(val);//设置数值即可,自动以十六进制显示
}

void Widget::on_btnHex_clicked()
{ //读取十六进制,以其他进制显示
    int val;
    val=ui->spinHex->value();//读取 spinHex 里的十六进制数,得到整数
    ui->spinDec->setValue(val);//设置数值即可,自动以十进制显示
    ui->spinBin->setValue(val);//设置数值即可,自动以二进制显示
}

(4)widget.ui文件:

相关推荐

  1. ThreadLocal使用以及使用场景

    2023-12-07 09:32:04       25 阅读
  2. git使用

    2023-12-07 09:32:04       71 阅读
  3. websoket 使用

    2023-12-07 09:32:04       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-07 09:32:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-07 09:32:04       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-07 09:32:04       82 阅读
  4. Python语言-面向对象

    2023-12-07 09:32:04       91 阅读

热门阅读

  1. MySql数据库优化的八种方式

    2023-12-07 09:32:04       61 阅读
  2. 数据结构——堆(存储完全二叉树)

    2023-12-07 09:32:04       60 阅读
  3. Jtti:网站服务器如何预防CC攻击?

    2023-12-07 09:32:04       60 阅读
  4. [C++] new和delete

    2023-12-07 09:32:04       59 阅读
  5. SpringBoot实现PDF添加水印

    2023-12-07 09:32:04       48 阅读
  6. vue2框架简易版响应式设计(观察者模式)

    2023-12-07 09:32:04       58 阅读
  7. libevent库中的http相关函数举例

    2023-12-07 09:32:04       52 阅读
  8. 如何设置不同的网页标题(react)

    2023-12-07 09:32:04       54 阅读
  9. mvn site 命令

    2023-12-07 09:32:04       57 阅读
  10. L0、Linux常用命令

    2023-12-07 09:32:04       58 阅读
  11. 【LeeCode】350.两个数组的交集 II

    2023-12-07 09:32:04       55 阅读
  12. ElasticSearch之Index stats API

    2023-12-07 09:32:04       55 阅读