【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

相关文章
|
7月前
【qt】数值的输入与输出3
【qt】数值的输入与输出
42 0
|
7月前
【qt】数值的输入与输出2
【qt】数值的输入与输出
57 0
|
7月前
QT中edit控件限制输入数值以及进制转换方法
QT中edit控件限制输入数值以及进制转换方法
|
5月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
188 1
Qt(C++)开发一款图片防盗用水印制作小工具
|
4月前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
94 0
|
3月前
|
开发工具 C++
qt开发技巧与三个问题点
本文介绍了三个Qt开发中的常见问题及其解决方法,并提供了一些实用的开发技巧。
|
3月前
|
4月前
|
C++
C++ Qt开发:QUdpSocket网络通信组件
QUdpSocket是Qt网络编程中一个非常有用的组件,它提供了在UDP协议下进行数据发送和接收的能力。通过简单的方法和信号,可以轻松实现基于UDP的网络通信。不过,需要注意的是,UDP协议本身不保证数据的可靠传输,因此在使用QUdpSocket时,可能需要在应用层实现一些机制来保证数据的完整性和顺序,或者选择在适用的场景下使用UDP协议。
173 2
Qt开发网络嗅探器02
Qt开发网络嗅探器02
|
4月前
|
存储 运维 监控
Qt开发网络嗅探器01
Qt开发网络嗅探器01