Qt小案例——进制转换

简介: Qt小案例——进制转换

界面展示



项目链接


法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);//设置数值即可,自动以二进制显示
}
相关文章
|
6月前
|
数据挖掘 C++
QT基础入门——项目案例(七)
QT基础入门——项目案例(七)
321 0
QT基础入门——项目案例(七)
|
6月前
|
IDE 开发工具 C++
QT案例IDE编写 -- 创建项目
QT案例IDE编写 -- 创建项目
82 0
|
4月前
|
网络协议
Qt中的网络编程(Tcp和Udp)运用详解以及简单示范案例
Tcp和Udp是我们学习网络编程中经常接触到的两个通讯协议,在Qt也被Qt封装成了自己的库供我们调用,对于需要进行网络交互的项目中无疑是很重要的,希望这篇文章可以帮助到大家。 是关于Qt中TCP和UDP的基本使用和特点:
630 7
|
4月前
|
开发者
Qt中的事件该如何学习?(附带案例)
事件是Qt中比较重要的一部分,在初期如果理解不当学习可能会比较困难,这里提一嘴当初教我的那位老师水平是真的高,让我很轻易的就理解了事件的概念。 在平时我们见到那些界面上的某些快捷键就有可能是事件做的,例如ESC关闭窗口,Enter提交或者登录这种类似的,这也是事件的强大之处。
112 0
|
设计模式 容器
34 QT - 聊天案例
34 QT - 聊天案例
122 0
|
6月前
QT中edit控件限制输入数值以及进制转换方法
QT中edit控件限制输入数值以及进制转换方法
|
6月前
|
存储 自然语言处理
QT案例词典 -- 存储内容及遍历
QT案例词典 -- 存储内容及遍历
48 1

推荐镜像

更多