项目介绍
本篇文章的内容是Qt多功能计算器的第四个功能,base64的加密和解密,这可能是除对话框外,这个项目中最简单、代码量最少的界面(因为项目还没有写完,所以我不能确定这一定是最简单的界面)。
界面设计
这是界面的设计图:
控件描述 | 控件名称 |
---|---|
输入框 | inputBox |
输出框 | outputBox |
加密按钮 | btnEncode |
解密按钮 | btnDecode |
控件名称 | 信号函数 | 槽函数 | 槽函数参数 |
---|---|---|---|
btnEncode | QPushButton::clicked() | Base64::btnEncodePushed() | None |
btnDecode | QPushButton::clicked() | base64::btnDecodePushed() | None |
void btnEncodePushed();
void btnDecodePushed();
connect(ui->btnEncode,&QPushButton::clicked,this,[=]{Base64::btnEncodePushed();});
connect(ui->btnDecode,&QPushButton::clicked,this,[=]{Base64::btnDecodePushed();});
界面逻辑
btnDecodePushed()函数
void Base64::btnDecodePushed()
{
QByteArray inputText = ui->inputBox->toPlainText().toLocal8Bit();
inputText = QByteArray::fromBase64(inputText);
QString outputText = QString::fromLocal8Bit(inputText);
ui->outputBox->setText(outputText);
}
处理解码按钮被按下的事件,对字符串进行解码
btnEncodePushed()函数
void Base64::btnEncodePushed()
{
QString inputText = ui->inputBox->toPlainText();
QString outputText = inputText.toUtf8().toBase64();
ui->outputBox->setText(outputText);
}
处理编码按钮被按下的事件,对字符串进行编码
知识整理
QByteArray
QByteArray与QString
- QString是字符串类型,可以处理各国语言的编码,默认都当作utf-8编码来处理
- QByteArray是字节流类型,对于语言,只能处理ACSII(美国信息交换标准代码)编码,也就是只能处理英语字符,如果QByteArray中有其它语言的编码,那么就会以原始字节流的形式输出
- 相比QString,QByteArray具有更强的灵活性,在适当的地方使用可以缩短代码
QByteArray::fromBase64()函数
对QByteArray字节流进行base64解密
QString::toLocal8Bit()函数
将QString转换为字节流,返回的数据类型是QByteArray。
QString::fromLocal8Bit()函数
将字节流转换为字符串,与QString::toLocal8Bit()函数相反。