当前位置: 代码迷 >> QT开发 >> 帮忙见见为什么slot不执行
  详细解决方案

帮忙见见为什么slot不执行

热度:81   发布时间:2016-04-25 03:10:54.0
帮忙看看为什么slot不执行
本帖最后由 ai309581115 于 2014-10-09 23:49:31 编辑
#include "networkget.h"

NetWorkGet::NetWorkGet(QUrl url, QString filename)
{
    file = new QFile("./temp/"+filename);
    file->open(QIODevice::WriteOnly|QIODevice::Text);
    //获取网络图片

    manager = new QNetworkAccessManager(this);

    connect(manager, SIGNAL(finished(QNetworkReply*)),
                this, SLOT(replyFinished(QNetworkReply*)));
    manager->get(QNetworkRequest(url));
}


void NetWorkGet::replyFinished(QNetworkReply *reply)
{
    if(reply->error() == QNetworkReply::NoError)
    {
        file->write(reply->readAll());
        file->close();
        file->flush();
        delete file;
        file = 0;
    }
}


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    NetWorkGet *n = new NetWorkGet(QUrl("http://api.bilibili.cn/bangumi"),"bangumi");
    //MainWindow w; // 这么写槽执行
    //w.show();
    return a.exec();
}


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    NetWorkGet *n = new NetWorkGet(QUrl("http://api.bilibili.cn/bangumi"),"bangumi");
    ui->setupUi(this);//写在mainwindow 槽不执行 不知道怎么回事 
}

------解决思路----------------------
    connect(manager, SIGNAL(finished(QNetworkReply*)),
                this, SLOT(replyFinished(QNetworkReply*)));
    manager->get(QNetworkRequest(url));
这2行交换下顺序呢?
------解决思路----------------------
connect成功了吗?运行时没警告?
  相关解决方案