【qt】数值的输入与输出1

简介: 【qt】数值的输入与输出

一.与c++中的输入与输出的区别

在c++中我们一般通过控制台进行输入和输出,但是在qt中,我们的输入和输出要在界面中进行。

根据组件的不同,有的组件输入之后的类型是数值,但是有的组件输入之后的类型是QString类型

因此我们要学会QString与数值之间的相互转换,以便我们进行操作

二.QString转数值

这个其实我们在QString字符串中我就讲过,忘了的可以去看看,这里还是提一下吧。

其实就是用**toInt()**这个接口,int可以换成其他类型。

QString str="10086";
int num=str.toInt();
qDebug()<<num;

运行结果就是:10086

还可以加俩个参数第一个是判断是否转换成功

第二个是进制

    int num;
    QString str1="a123";
    bool ret;
    num=str1.toInt(&ret,10);
    if(ret)
    {
        qDebug()<<"转换成功"<<num;
    }
    else
    {
        qDebug()<<"转换失败";
    }

运行的结果:转换失败。

其他类型的都是类似的。

三.数值转QString

1.number()

万物皆有两面,我们来看看数值又如何转换到QString的。

可以用QString自带的静态函数number()

    int num=10086;
    QString str=QString::number(num);
    qDebug()<<str;

就成功的将整型转换成了QString类型!

也可以进行进制的转换

    int num=255;
    QString str=QString::number(num,16);
    qDebug()<<str;

运行结果为:ff 这是16进制哦

还可以对浮点数进行转换

    float num=3.14;
    QString str=QString::number(num,'f',2);
    qDebug()<<str;

f :就是用浮点数的形式进行打印。

e:就是用科学计数法的形式进行打印。

g:会根据具体数值自动的进行f或者e的形式进行打印。

2.asprintf()

还有一种方式也可以进行转换,有点类似于c语言的sprintf()

这个的好处就是可以将数值转换为QString字符串的时候,还可以自定义格式。

    float num=3.1415;
    QString str=QString::asprintf("这个数为:%.2f",num);
    qDebug()<<str;

运行结果:这个数为:3.14

四.小项目

ok,我们现在知道了如何数值与字符串进行转换了,我们就可以来玩界面的东西了。下面我还是会以小的项目来边玩边学。

1.总价和进制

你们知道我刚刚为什么手写运行结果吗?

终于有网了,可以截图了,哈哈哈

目标图:

我们希望可以用户输入单价和数量后,就可以算出总价。

还有一个功能就是可以进行进制之间的转换。

话不多说,直接开始界面设计:


记得改每个组件的名字哦,方便你的操作!

这样的界面实在太垃,我们要添加布局

几个组件排列整齐,类似于表格的,我们可以用这个栅格布局

完美

然后我们用Spacer来添加空隙,达到自己喜欢的样式

最后我们对整个窗口进行一个垂直布局就可以达到:

OK,接下来就开始来实现我们的功能了,首先对计算进行转到槽

void Dialog::on_pushButtonCal_clicked()
{
    int count=ui->lineEditCount->text().toInt();
    float price=ui->lineEditPrice->text().toFloat();
    float total=count*price;
    
    QString ret=QString::number(total,'f',2);
    ui->lineEditTotal->setText(ret);
}

OK,我来讲讲这个代码,我们输入数据是在Line Edit组件里面,所以是QString的类型,但是我们需要做单价*数量的运算

所以我们刚刚学习的第一个点就可以用到了

先将字符串转成数值,然后进行乘法运算。

然后我们需要把结果输出到总价框中,因为里面需要的是字符串格式,所以,我们又将total转换成字符串的格式进行输出。

这就是字符串与数值之间的转换的具体用法。

可以先简单看下效果:

按道理总价是我们计算出来的,不允许我们进行输入,所以我们可以对总价的组件的enabled进行关闭。

然后运行结果:

总结就只能只读了

接下来我们开始对进制的功能进行实现。

void Dialog::on_pushButton10_clicked()
{
    int dec=ui->lineEdit10->text().toInt();
    QString hex=QString::number(dec,16);
    QString bin=QString::number(dec,2);
    ui->lineEdit2->setText(bin);
    ui->lineEdit16->setText(hex);
}

void Dialog::on_pushButton2_clicked()
{
    bool ret;
    int bin=ui->lineEdit2->text().toInt(&ret,2);
    QString hex=QString::number(bin,16);
    QString dec=QString::number(bin,10);
    ui->lineEdit10->setText(dec);
    ui->lineEdit16->setText(hex);
}

void Dialog::on_pushButton16_clicked()
{
    bool ret;
    int hex=ui->lineEdit16->text().toInt(&ret,16);
    QString bin=QString::number(hex,2);
    QString dec=QString::number(hex,10);
    ui->lineEdit10->setText(dec);
    ui->lineEdit2->setText(bin);
}

原理基本相同:将进制框里输入的东西拿出来,转换成相应进制的数值,然后再转换成相应的字符串,设置到界面框中。

运行结果:


都可以相互转换,你们可以玩玩,不截图了。

现在咱们来讲讲那些不需要转换,输入之后就直接是数值的组件

【qt】数值的输入与输出2:https://developer.aliyun.com/article/1522983

相关文章
|
29天前
【qt】数值的输入与输出3
【qt】数值的输入与输出
18 0
|
29天前
【qt】数值的输入与输出2
【qt】数值的输入与输出
19 0
|
1月前
QT中edit控件限制输入数值以及进制转换方法
QT中edit控件限制输入数值以及进制转换方法
|
1月前
|
C++
C++ Qt开发:SpinBox数值微调框组件
`QSpinBox`是Qt框架中的一个部件(Widget),用于提供一个方便用户输入整数值的界面元素。它通常以微调框(SpinBox)的形式展现,用户可以通过微调框上的按钮或手动输入来增加或减少整数值。在实际使用中该控件主要用于整数或浮点数的计数显示,与普通的`LineEdit`组件不同,该组件可以在前后增加特殊符号并提供了上下幅度的调整按钮,灵活性更强。
62 0
C++ Qt开发:SpinBox数值微调框组件
|
1月前
|
算法 编译器 Linux
【Qt4 部署】ARM系统上使用Qt 4 进行开发的QWS 等环境变量部署
【Qt4 部署】ARM系统上使用Qt 4 进行开发的QWS 等环境变量部署
47 0
|
8天前
|
关系型数据库 MySQL 项目管理
数据库大作业——基于qt开发的图书管理系统(四)项目目录的整理与绘制登录页面
数据库大作业——基于qt开发的图书管理系统(四)项目目录的整理与绘制登录页面
|
8天前
|
SQL 关系型数据库 MySQL
数据库大作业——基于qt开发的图书管理系统(三)Qt连接Mysql数据库
数据库大作业——基于qt开发的图书管理系统(三)Qt连接Mysql数据库
|
8天前
|
SQL 数据可视化 关系型数据库
数据库大作业——基于qt开发的图书管理系统(二) 相关表结构的设计
数据库大作业——基于qt开发的图书管理系统(二) 相关表结构的设计
|
8天前
|
安全 BI 数据库
数据库大作业——基于qt开发的图书管理系统 (一)环境的配置与项目需求的分析
数据库大作业——基于qt开发的图书管理系统 (一)环境的配置与项目需求的分析
|
1月前
|
区块链
【qt】最快的开发界面效率——混合编程3
【qt】最快的开发界面效率——混合编程
42 1