【问题标题】:QtNetworkRequest cause program to "finish unexpectedly"QNetworkRequest 导致程序“意外完成”
【发布时间】:2017-11-09 01:59:32
【问题描述】:

我是 C++ 和 Qt 的初学者,我正在尝试制作一个翻译程序,但它在执行网络请求时崩溃...

错误: Overstter.exe 退出,代码为 255

我的代码:

头文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QApplication>
...
#include <QUrl>
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkReply>
#include <QtScript/QScriptEngine>
#include <QtScript/QScriptValue>
#include <QtScript/QScriptValueIterator>

class MainWindow : public QWidget
{
Q_OBJECT

public:
MainWindow();

public slots:
void getTranslation();
void onTranslationRecieved(QNetworkReply* reply);

private:
QTextEdit *te_input;
QTextEdit *te_output;
};
#endif

代码文件

void MainWindow::getTranslation()
{
te_output->setText("[Oversettelse pågår]\n[Translation in progress]");

QString url = "http://translate.googleapis.com/translate_a/single?client=gtx";
...
url.append(te_input->toPlainText());
qInfo() << "url: " + url;

QNetworkAccessManager *nam;
connect(nam, SIGNAL(finished(QNetworkReply*)), this, SLOT(onTranslationRecieved(QNetworkReply*)));
nam->get(QNetworkRequest(QUrl(url)));

}

void MainWindow::onTranslationRecieved(QNetworkReply* reply)
{
QString data = (QString) reply->readAll();
te_output->setText(data);

QScriptEngine engine;
QScriptValue result = engine.evaluate(data);
QString translation = result.property("0").property("0").property("0").toString();
}

任何帮助将不胜感激:-)

【问题讨论】:

  • 你能把 MainWindow 的类定义放上去吗?像这样,我会说你忘记初始化你的指针成员之一,它会导致段错误
  • 你从不初始化QNetworkAccessManager *nam;!?这是您尝试访问的无效指针。
  • 如果您至少使用 Qt 5,您可能希望使用 JSON Support in Qt 来解析结果,而不是使用 QScriptEngine
  • @RD41 Qt 在所有类的文档中都有相当不错的例子:看这个doc.qt.io/qt-5/qnetworkaccessmanager.html#details
  • 谢谢,看来问题已经解决了。

标签: c++ qt


【解决方案1】:

首先:

一行

QNetworkAccessManager *nam; 

应该是:

QNetworkAccessManager *nam = new QNetworkAccessManager(this);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    相关资源
    最近更新 更多