| 
 Название: QNetworkAccessManager
 Отправлено: digwnews от Июля 06, 2011,  22:55
 
 Изучаю QT. Написал мини-программу, которая загружает определённый сайт. Вот: mainwindow.h #ifndef MAINWINDOW_H#define MAINWINDOW_H
 
 #include <QMainWindow>
 #include <QNetworkReply>
 
 namespace Ui {
 class MainWindow;
 }
 
 class MainWindow : public QMainWindow
 {
 Q_OBJECT
 
 public:
 explicit MainWindow(QWidget *parent = 0);
 ~MainWindow();
 void downn(QString url);
 
 private:
 Ui::MainWindow *ui;
 private slots:
 void FinishDownload(QNetworkReply * point);
 };
 
 #endif // MAINWINDOW_H
 
main.cpp #include <QtGui/QApplication>#include "mainwindow.h"
 
 int main(int argc, char *argv[])
 {
 QApplication a(argc, argv);
 MainWindow w;
 w.downn("http://ya.ru");
 w.show();
 
 return a.exec();
 }
mainwindow.cpp #include "mainwindow.h"#include "ui_mainwindow.h"
 #include <QtNetwork/QNetworkAccessManager>
 #include <QtNetwork/QNetworkReply>
 #include <QNetworkRequest>
 #include <QUrl>
 #include <QMessageBox>
 #include <QNetworkReply>
 
 MainWindow::MainWindow(QWidget *parent) :
 QMainWindow(parent),
 ui(new Ui::MainWindow)
 {
 ui->setupUi(this);
 }
 
 MainWindow::~MainWindow()
 {
 delete ui;
 }
 
 void MainWindow::downn(QString url)
 {
 QNetworkAccessManager manager;
 QObject::connect(&manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(FinishDownload(QNetworkReply*)));
 QNetworkRequest req;
 QUrl urlto;
 urlto.setUrl(url);
 req.setUrl(urlto);
 manager.get(req);
 }
 
 void MainWindow::FinishDownload(QNetworkReply *point)
 {
 QMessageBox::about(this, "title", "ok!!!");
 }
По идее в моей программе должен всегда вызываться слот FinishDownload и выкидывать мессэджбокс. Но этого не происходит. Прграмма просто открывается и всё. Никакого мессэджбокса нет. В чём проблема?
 Название: Re: QNetworkAccessManager
 Отправлено: Пантер от Июля 07, 2011,  07:15
 
 QNetworkAccessManager создан на стеке и уничтожится при выходе из функции. Создавай его в куче, то есть QNetworkAccessManager *manager = new QNetworkAccessManager (this)
 
 Название: Re: QNetworkAccessManager
 Отправлено: digwnews от Июля 07, 2011,  10:36
 
 Точно.Спасибо.
 
 
 |