項目介紹
本篇文章的内容是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()函數相反。