首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >qt networkManager get

qt networkManager get
EN

Stack Overflow用户
提问于 2011-03-08 21:23:15
回答 1查看 2.4K关注 0票数 0

我想下载在行编辑小工具中输入的url。

我不能让它工作,谁能给我一个简短的代码片段,可以把文件的值到一个QString?

代码语言:javascript
复制
void imdb::on_imdbGetButton_clicked()
{

Qstring link1 = ui->lineEdit2->text();
// QString link1 is the url to be downloaded.
}

我已经添加了所需的头文件..

谢谢..

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-13 02:05:35

我猜您正在尝试通过http下载文件。下面是你可以做的:

在您的文件中添加QT += network

  • Create一个QNetworkAccessManager类的实例;

  • 通过QNetworkRequest对象提供您的文件的URL:manager->get(QNetworkRequest("file_url"));

  • Connect to QNetworkAccessManager
  1. 在完成的信号处理程序中读取QNetworkReply的内容并将其保存到本地文件。<代码>H217<代码>G218

下面是一个小示例。Download将在单击MainForm类的按钮时开始:

mainwindow.h:

代码语言:javascript
复制
#include <QMainWindow>
#include <QNetworkAccessManager>
#include <QDebug>
#include <QUrl>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QFile>
#include <QFileInfo>
#include <QPushButton>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    QNetworkAccessManager* _manager;

private slots:
    void on_pushButton_clicked();
    void downloadFinished(QNetworkReply *reply);
};

mainwindow.cpp:

代码语言:javascript
复制
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QPushButton* button = new QPushButton("Download", this);
    button->setGeometry(20, 20, 80, 30);
    connect(button, SIGNAL(clicked()), SLOT(on_pushButton_clicked()));

    _manager = new QNetworkAccessManager(this);
    connect(_manager, SIGNAL(finished(QNetworkReply*)), SLOT(downloadFinished(QNetworkReply*)));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    QUrl url("http://pics.mtii.com/ClassPictures2011/MIA/E110227-PMIA3-JEAN/thumbnails/P2270448%20copy.jpg");
    _manager->get(QNetworkRequest(url));
}

void MainWindow::downloadFinished(QNetworkReply *reply)
{
    QUrl url = reply->url();
    if (reply->error())
    {
        qDebug() << "Download of " <<  url.toEncoded().constData()
                 << " failed: " << reply->errorString();
    }
    else
    {
        QString path = url.path();
        QString fileName = QFileInfo(path).fileName();
        if (fileName.isEmpty()) fileName = "download";

        QFile file(fileName);
        if (file.open(QIODevice::WriteOnly))
        {
            file.write(reply->readAll());
            file.close();
        }

        qDebug() << "Download of " <<  url.toEncoded().constData()
                 << " succeded saved to: " << fileName;
    }
}

希望这能有所帮助,致敬

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5233057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档