搞了这么多天终于搞出点东西来了,用qt写了一个简单的翻译小工具,方法就是接入百度的翻译api。发送http请求,获得内容。
代码:
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QtNetwork>
#include <QMessageBox>
#include <QJsonObject>
#include <QJsonDocument>
#include <QDebug>
#include <QJsonArray>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
//翻译的按钮
void on_OK_clicked();
//读取返回的内容
void read(QNetworkReply *reply);
//获取要翻译的内容
void on_English_textChanged(const QString &arg1);
private:
Ui::MainWindow *ui;
//发送请求
QNetworkAccessManager *manager;
//输入的内容
QString input;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//初始化
manager=new QNetworkAccessManager(this);
//将请求结束的信号与读取内容的函数关联起来
connect(manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(read(QNetworkReply*)));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_OK_clicked()
{
if(input.isEmpty())//判断输入是否为空
QMessageBox::information(this,"WRONG","Please input the word you want to translate");
else
manager->get(QNetworkRequest(QUrl("http://openapi.baidu.com/public/2.0/bmt/translate?client_id=8PVL9pMBUyCEI65EoiazVTpl&q="+input+"&from=auto&to=auto")));
//get里的是发送请求的URL,里面的client是申请的百度apikey
//q后面的是要翻译的内容,from和to是从什么语种翻译成什么语种,auto表示自动检测
}
//读取内容并显示
void MainWindow::read(QNetworkReply *reply)
{
QJsonDocument jsonResponse=QJsonDocument::fromJson(reply->readAll());
QJsonObject jsonObject = jsonResponse.object();
QJsonArray array=jsonObject.value("trans_result").toArray();
for(int i=0;i<array.size();i++)
{
QJsonValue value=array[i];
QJsonObject obj=value.toObject();
ui->Show->setText(obj.value("dst").toString());
}
}
//获取要输入的内容
void MainWindow::on_English_textChanged(const QString &arg1)
{
input.clear();
input=arg1;
}