• 大小: 8KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: 其他
  • 标签: QT  API  

资源简介

有疑问的请在博客下方留言,不能及时回复请谅解,谢谢。

资源截图

代码片段和文件信息

#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=“ << 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“ << networkReply;

    QJsonobject obj = stringToJson(networkReply);
    if(obj.contains(“trans_result“))
    {
        QJsonValue val = obj.value(“trans_result“);
        if(val.isArray())
        {
            QJsonArray array = val.toArray();
            //            qDebug() << array;    //将该对象一次性打印出来
            qDebug() << array.at(0);
            if(array.at(0).isobject())
            {
                QJsonobject obj = array.at(0).toobject();
                if(obj.contains(“dst“))
                {
                    QString utf8Reply = obj.value(“dst“).toString();
                    qDebug() << “utf8Reply“ << 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


评论

共有 条评论