資源簡介
有疑問的請在博客下方留言,不能及時回復請諒解,謝謝。

代碼片段和文件信息
#include?“electronicdictionary.h“
#include?“ui_electronicdictionary.h“
#include?
#include?
#include?ject>
#include?
#include?
#include?
#include?
electronicDictionary::electronicDictionary(QWidget?*parentQString?appid?QString?key?QString?salt):
????QWidget(parent)
????ui(new?Ui::electronicDictionary)
{
????ui->setupUi(this);
????//默認初始化
????from?=?“en“;
????to?=?“zh“;
????this->appid?=?appid;
????this->key?=?key;
????this->salt?=?salt;
}
electronicDictionary::~electronicDictionary()
{
????delete?ui;
}
void?electronicDictionary::on_teSend_textChanged()
{
????q?=?ui->teSend->toPlainText();
}
void?electronicDictionary::on_pbTranslate_clicked()
{
????md5Encryption();
//????urlEncode();
????//設置訪問地址
????url?=?“http://api.fanyi.baidu.com/api/trans/vip/translate?“;
????url?+=??“q=“?+?q?+
????????????“&from=“?+?from?+
????????????“&to=“?+?to?+
????????????“&appid=“?+?appid?+
????????????“&salt=“?+?salt?+
????????????“&sign=“?+?signMd5;
????qDebug()?<“url=“?<
????//實例化網址管理
????request?=?new?QNetworkRequest;
????//1、設置具體的網址
????request->setUrl(url);
????//2、實例化http請求方式
????manager?=?new?QNetworkAccessManager;
????//關聯信號?finished?當網頁回復數據時觸發,此時才能在槽函數中,讀取請求到的數據
????connect(manager?SIGNAL(finished(QNetworkReply*))?this?SLOT(httpReply(QNetworkReply?*)));
????//3、get方法請求(get方法上傳)
????manager->get(*request);
}
void?electronicDictionary::httpReply(QNetworkReply?*?reply)
{
????networkReply?=?““;
????networkReply.append(reply->readAll());
????qDebug()?<“networkReply“?<
????QJsonobject?obj?=?stringToJson(networkReply);
????if(obj.contains(“trans_result“))
????{
????????QJsonValue?val?=?obj.value(“trans_result“);
????????if(val.isArray())
????????{
????????????QJsonArray?array?=?val.toArray();
????????????//????????????qDebug()?<????????????qDebug()?<????????????if(array.at(0).isobject())
????????????{
????????????????QJsonobject?obj?=?array.at(0).toobject();
????????????????if(obj.contains(“dst“))
????????????????{
????????????????????QString?utf8Reply?=?obj.value(“dst“).toString();
????????????????????qDebug()?<“utf8Reply“?<????????????????????ui->teRecv->clear();
????????????????????ui->teRecv->insertPlainText(utf8Reply);
????????????????}
????????????}
????????}else{
????????????qDebug()?<“錯誤:“< ????????}
????}
}
QJsonobject?electronicDictionary::stringToJson(const?QString?jsonString)
{
????//QTextCodec類提供文本編碼之間的轉換
????//codecForName():搜索所有已安裝的qtextcodec對象,并返回與名稱最匹配的對象;
????//匹配是不區分大小寫的。如果找不到與名稱匹配的編解碼器,則返回0。
????QTextCodec?*tc?=?QTextCodec::codecForName(“UTF-8“);//防止中文亂碼
????//指示編譯器指定名稱的參數不在函數正文中使用。這可用于抑制編譯器警告,同時允許在其簽名中使用有意義的參數名稱定義函數。
????Q_UNUSED(tc);
????QJsonDocument?jsonDocument?=?QJsonDocument::fromJson(jsonString.toUtf8());
????if?(jsonDocument.isNull()){
????????qDebug()?<“
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5052??2019-11-04?00:20??myElectronicDictionary\electronicdictionary.cpp
?????文件???????1261??2019-11-03?23:46??myElectronicDictionary\electronicdictionary.h
?????文件???????3487??2019-11-03?23:05??myElectronicDictionary\electronicdictionary.ui
?????文件????????175??2019-11-03?22:27??myElectronicDictionary\main.cpp
?????文件???????1157??2019-11-03?22:37??myElectronicDictionary\myElectronicDictionary.pro
?????文件??????23958??2019-11-12?20:55??myElectronicDictionary\myElectronicDictionary.pro.user
?????文件???????1147??2019-11-03?23:01??myElectronicDictionary\widget.cpp
?????文件????????577??2019-11-04?00:04??myElectronicDictionary\widget.h
?????文件???????2997??2019-11-04?00:03??myElectronicDictionary\widget.ui
?????目錄??????????0??2019-11-12?20:55??myElectronicDictionary
-----------?---------??----------?-----??----
????????????????39811????????????????????10
- 上一篇:命名管道實現進程間通信程序
- 下一篇:一份有關于SATA 技術介紹
評論
共有 條評論