界面展示
项目链接
法1:https://mp.csdn.net/console/upDetailed
法2:https://download.csdn.net/download/weixin_45525272/16660293
项目构成
页面设计
1. QString::number(num,x)法
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(); //计算 按键单击响应 void on_btnDec_clicked(); //十进制转换为其他进制 void on_btnBin_clicked(); //二进制转换为其他进制 void on_btnHex_clicked(); //十六进制转换为其他进制 private: Ui::Widget *ui; }; #endif // WIDGET_H
widget.cpp
#include "widget.h" #include "ui_widget.h" #include <QString> Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); } Widget::~Widget() { delete ui; } void Widget::on_btnDec_clicked() { //读取十进制数,转换为其他进制 int val=ui->editDec->text().toInt();//读取十进制数 QString str=QString::number(val,16);// 显示为16进制 的字符串 str=str.toUpper(); //转换为全大写字母 ui->editHex->setText(str);//显示16进制字符串 str=QString::number(val,2);// 显示2进制的字符串 ui->editBin->setText(str);//显示二进制字符串 } void Widget::on_btnBin_clicked() { //读取二进制数,转换为其他进制的数 bool ok; int val=ui->editBin->text().toInt(&ok,2);//以二进制数读入 QString str=QString::number(val,10);//数字显示为10进制字符串 ui->editDec->setText(str);//显示10进制数字符串 str=QString::number(val,16);//显示为十六进制字符串 str=str.toUpper(); //全大写字母 ui->editHex->setText(str);//显示十六进制字符串 } void Widget::on_btnHex_clicked() {//读取16进制数,转换为其他进制的数 bool ok; int val=ui->editHex->text().toInt(&ok,16);//以十六进制数读入 QString str=QString::number(val,10);// 显示为10进制字符串 ui->editDec->setText(str);//显示为10进制字符串 str=QString::number(val,2);// 显示二进制字符串 ui->editBin->setText(str);//显示二进制字符串 }
2. 使用spinbox
spinbox显示数据可以设置进制显示的属性
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
widget.cpp
#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);//设置数值即可,自动以二进制显示 }