Qt5.9 C++开发指南 4.1 字符串和数值之间转换

在这里插入图片描述
主要有两个函数,分别是toInt(),setNum()
其中setNum()和QString::number效果一样。
使用方法

strNum  = QString::number(val,10);
strNum = strNum.setNum(val,10);
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    
    
    ui->setupUi(this);
}

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


void Widget::on_pBtnSum_clicked()
{
    
    
    QString strNum = ui->liEditNum->text();
    QString strPrice = ui->liEditPrice->text();

    if(strNum.isEmpty() || strPrice.isEmpty())
        return;
    int num = strNum.toInt();//如果字符串是‘ff’,那么base = 16,最后得到的num = 255,如果设置base=10,那么会失败,base默认为10
    float price = strPrice.toFloat();
    float total = num*price;
    strPrice = strPrice.sprintf("%.2f",total);
    ui->liEditTotal->setText(strPrice);
}

void Widget::on_pBtnDec_clicked()
{
    
    
    QString strNum = ui->liEditDec->text();
    if(strNum.isEmpty())
        return;
    int val = strNum.toInt();
    strNum = strNum.setNum(val,16);//转为16进制 setNum(待转换的数字,需要转换的进制)
    strNum = strNum.toUpper();//转为大写
    ui->liEditHex->setText(strNum);
    strNum = strNum.setNum(val,2);
    ui->liEditBin->setText(strNum);
}

void Widget::on_pBtnBin_clicked()
{
    
    
    QString strNum = ui->liEditBin->text();
    if(strNum.isEmpty())
        return;
    bool ok;
    int val = strNum.toInt(&ok,2);
    strNum = strNum.setNum(val,16);//转为16进制 setNum(待转换的数字,需要转换的进制)
    strNum = strNum.toUpper();//转为大写
    ui->liEditHex->setText(strNum);
    strNum = strNum.setNum(val,10);
    ui->liEditDec->setText(strNum);
}

void Widget::on_pBtnHex_clicked()
{
    
    
    QString strNum = ui->liEditDec->text();
    if(strNum.isEmpty())
        return;
    bool ok;
    int val = strNum.toInt(&ok,16);
    strNum = strNum.setNum(val,10);//转为16进制 setNum(待转换的数字,需要转换的进制)
    ui->liEditDec->setText(strNum);
    strNum = strNum.setNum(val,2);
    ui->liEditBin->setText(strNum);
}

猜你喜欢

转载自blog.csdn.net/weixin_43387612/article/details/107186064