2011-03-08 6 views
0

私は行編集ウィジェットに入力されたURLをダウンロードしたいと思います。qt networkManager get

私はそれを動作させることができません、いくつかのQStringにファイルの値を置くことができる短いコードスニペットを教えてくださいできますか?私は、必要なヘッダファイルを追加した

void imdb::on_imdbGetButton_clicked() 
{ 

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

..

おかげ..

+0

値についてファイル? – RedX

+0

lineditに入力されたファイルをダウンロードし、その値を文字列に渡します...ありがとう – Vamsi

答えて

1

私はあなたがHTTP経由でファイルをダウンロードしようとしていると思います。ここでは、何ができるかです:あなたは

  1. * .PROファイルがQT += network
  2. QNetworkAccessManagerクラスのインスタンスを作成します。を追加。 QNetworkRequestオブジェクト経由
  3. サプライファイルのURLへ:manager->get(QNetworkRequest("file_url"));
  4. 接続し、完成したシグナルハンドラでQNetworkAccessManager
  5. finished信号にはQNetworkReplyの内容を読み、ローカルファイルに保存します。

以下は小さな例です。ダウンロードのMainFormクラスのボタンクリックで起動します:

mainwindow.h:

#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:このことができます

#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; 
    } 
} 

希望は、の