QT实现二、八、十六进制之间的转换

 更新时间:2022年05月15日 15:55:54   作者:麦子穗  
本文主要介绍了QT实现二、八、十六进制之间的转换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

主要使用QT中的三个方法。

  • 第一个是QString::number(int n, int base = 10);
  • 第二个是QString::setNum(short n, int base = 10);
  • 第三个是int QString::toInt(bool *ok = nullptr, int base = 10) const

这三个方法默认值都是十进制。

先上效果图,最后会附上源码:

接下来开始代码实现:

首先打开QT->新建文件或项目,然后跟着图中标注进行下一步

文件名和路径自己设置就可。

一直点下一步;

一直点下一步。创建成功先点绿色箭头运行一下。

接着重头戏来了!!!!

 如图所示,同时还会在.cpp文件中添加函数定义:

 所要实现的功能是,当点击对应“转换为其他进制”的按钮时,获取对应输入框的内容,然后把内容转换为对应进制。

主要hao

//QString::number()和setNum()都可以转换
void MainWindow::on_btn1_clicked()
{//十进制转为其他进制
    QString str = ui->shi->text();
    int value = str.toInt();//十进制,toInt()默认是10进制数
 
    str = str.setNum(value,2);//转为二进制
    ui->er->setText(str);
 
    str = str.setNum(value,16).toUpper();//转为十六进制
    ui->shiliu->setText(QString("0x%1").arg(str));
 
    str = str.setNum(value,8);//转为八进制
    ui->ba->setText(str);
}
 
void MainWindow::on_btn2_clicked()
{//二进制转为其他进制
    QString str = ui->er->text();//二进制
    bool ok;
    int value = str.toInt(&ok, 2);//以二进制数读入,读取成功ok=true;
    qDebug() << "ok=" << ok;
 
    str = QString::number(value,10);//转为十进制
    ui->shi->setText(str);
 
    str = QString::number(value,16).toUpper();//转为十六进制
    ui->shiliu->setText(QString("0x%1").arg(str));
 
    str = QString::number(value,8);//转为八进制
    ui->ba->setText(str);
}
 
void MainWindow::on_btn3_clicked()
{//十六进制转为其他进制
    QString str = ui->shiliu->text();//十六进制
    bool ok;
    int value = str.toInt(&ok, 16);//以十六进制数读入
 
    str = QString::number(value,10);//转为十进制
    ui->shi->setText(str);
 
    str = str.setNum(value,2);//转为二进制
    ui->er->setText(str);
 
    str = QString::number(value,8);//转为八进制
    ui->ba->setText(str);
}
 
void MainWindow::on_btn4_clicked()
{//八进制转为其他进制
    QString str = ui->ba->text();//八进制
    bool ok;
    int value = str.toInt(&ok, 8);//以八进制数读入
 
    str = QString::number(value,10);//转为十进制
    ui->shi->setText(str);
 
    str = str.setNum(value,2);//转为二进制
    ui->er->setText(str);
 
    str = QString::number(value,16).toUpper();//转为十六进制
    ui->shiliu->setText(QString("0x%1").arg(str));
}

 好啦,到这里,代码就结束啦,是不是感觉很简单?!

最后附上源码,亲测可运行,如果你在运行时,出现问题,可以留言。

.pro 文件源码

QT       += core gui
 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
CONFIG += c++11
 
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
 
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
 
SOURCES += \
    main.cpp \
    mainwindow.cpp
 
HEADERS += \
    mainwindow.h
 
FORMS += \
    mainwindow.ui
 
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

头文件.h源码

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
 
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
 
private slots:
 
    void on_btn1_clicked();
 
    void on_btn2_clicked();
 
    void on_btn3_clicked();
 
    void on_btn4_clicked();
 
private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

main.cpp源码

#include "mainwindow.h"
 
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

.cpp源码

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
 
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("各种进制之间相互转换");
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
//QString::number()和setNum()都可以转换
void MainWindow::on_btn1_clicked()
{//十进制转为其他进制
    QString str = ui->shi->text();
    int value = str.toInt();//十进制,toInt()默认是10进制数
 
    str = str.setNum(value,2);//转为二进制
    ui->er->setText(str);
 
    str = str.setNum(value,16).toUpper();//转为十六进制
    ui->shiliu->setText(QString("0x%1").arg(str));
 
    str = str.setNum(value,8);//转为八进制
    ui->ba->setText(str);
}
 
void MainWindow::on_btn2_clicked()
{//二进制转为其他进制
    QString str = ui->er->text();//二进制
    bool ok;
    int value = str.toInt(&ok, 2);//以二进制数读入,读取成功ok=true;
    qDebug() << "ok=" << ok;
 
    str = QString::number(value,10);//转为十进制
    ui->shi->setText(str);
 
    str = QString::number(value,16).toUpper();//转为十六进制
    ui->shiliu->setText(QString("0x%1").arg(str));
 
    str = QString::number(value,8);//转为八进制
    ui->ba->setText(str);
}
 
void MainWindow::on_btn3_clicked()
{//十六进制转为其他进制
    QString str = ui->shiliu->text();//十六进制
    bool ok;
    int value = str.toInt(&ok, 16);//以十六进制数读入
 
    str = QString::number(value,10);//转为十进制
    ui->shi->setText(str);
 
    str = str.setNum(value,2);//转为二进制
    ui->er->setText(str);
 
    str = QString::number(value,8);//转为八进制
    ui->ba->setText(str);
}
 
void MainWindow::on_btn4_clicked()
{//八进制转为其他进制
    QString str = ui->ba->text();//八进制
    bool ok;
    int value = str.toInt(&ok, 8);//以八进制数读入
 
    str = QString::number(value,10);//转为十进制
    ui->shi->setText(str);
 
    str = str.setNum(value,2);//转为二进制
    ui->er->setText(str);
 
    str = QString::number(value,16).toUpper();//转为十六进制
    ui->shiliu->setText(QString("0x%1").arg(str));
}

运行后的界面如下:

 到此这篇关于QT实现二、八、十六进制之间的转换的文章就介绍到这了,更多相关QT进制转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • ACE反应器(Reactor)模式的深入分析

    ACE反应器(Reactor)模式的深入分析

    本篇文章是对ACE反应器(Reactor)模式进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • Qt Design Studio创建工程的实现方法

    Qt Design Studio创建工程的实现方法

    Qt Design Studio它允许设计人员和开发人员使用通用的设计、开发、分析和调试工具在不同的开发平台上共享一个项目,本文主要介绍了Qt Design Studio创建工程的实现方法,具有一定的参考价值,感兴趣的可以了解一下
    2022-05-05
  • VScode platformio使用的详细步骤

    VScode platformio使用的详细步骤

    使用VSCode作为编辑器,同时借助PlatformIO插件,可以帮助开发者更加高效地进行嵌入式开发,本文主要介绍了VScode platformio使用的详细步骤,感兴趣的可以了解一下
    2023-10-10
  • C++11新特性之右值引用与完美转发详解

    C++11新特性之右值引用与完美转发详解

    C++11标准为C++引入右值引用语法的同时,还解决了一个短板,即使用简单的方式即可在函数模板中实现参数的完美转发。本文就来讲讲二者的应用,需要的可以参考一下
    2022-09-09
  • QT网络编程Tcp下C/S架构的即时通信实例

    QT网络编程Tcp下C/S架构的即时通信实例

    下面小编就为大家带来一篇QT网络编程Tcp下C/S架构的即时通信实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • C语言字符串函数模拟实现流程介绍

    C语言字符串函数模拟实现流程介绍

    字符串函数(String processing function)也叫字符串处理函数,指的是编程语言中用来进行字符串处理的函数,如C,pascal,Visual以及LotusScript中进行字符串拷贝,计算长度,字符查找等的函数
    2022-09-09
  • C语言断言函数assert()的学习笔记

    C语言断言函数assert()的学习笔记

    在C语言库函数中提供了一个辅助调试程序的小型库,它是由assert()宏组成,本文就详细的介绍了一下如何使用,感兴趣的可以了解一下
    2021-11-11
  • C++ JSON库 nlohmann::basic_json::accept的用法解析

    C++ JSON库 nlohmann::basic_json::accept的用法解析

    nlohmann::basic_json::accept 是 Nlohmann JSON 库中的一个方法,它用于检查一个字符串是否可以解析为有效的 JSON,这篇文章主要介绍了C++ JSON库nlohmann::basic_json::accept的用法,需要的朋友可以参考下
    2023-06-06
  • C++学校运动会管理系统的实现

    C++学校运动会管理系统的实现

    这篇文章主要为大家详细介绍了C++如何实现学校运动会管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • 详解C++中的函数调用和下标以及成员访问运算符的重载

    详解C++中的函数调用和下标以及成员访问运算符的重载

    这篇文章主要介绍了详解C++中的函数调用和下标以及成员访问运算符,讲到了这些二元运算符使用的语法及重载,需要的朋友可以参考下
    2016-01-01

最新评论