void PhotoList::photoDownload(QString qurl)
{
qDebug() << "执行一次photodownload";
QNetworkAccessManager *accessManager = new QNetworkAccessManager(this);
QNetworkRequest request;
request.setUrl(QUrl(qurl));
accessManager->get(request);
connect(accessManager, SIGNAL(finished(QNetworkReply *)), this, SLOT(downloadReply(QNetworkReply *)));
}
void PhotoList::downloadReply(QNetworkReply *reply)
{
// int1 = 0;
qDebug() << "reply调用一次";
if (reply->error() == QNetworkReply::NoError)
{
qDebug() << "--------3";
QByteArray bytes = reply->readAll();
QPixmap pixmap;
pixmap.loadFromData(bytes);
// 缓存到本地
QFile file("E:/head.jpg");
if (file.open(QIODevice::Append))
file.write(bytes);
file.close();
// int1++ ;
qDebug() << "--------4";
qDebug() << "success photo show";
}
else
{
// 错误处理-显示错误信息,或显示上一次缓存的图片或叉图。
qDebug() << "error photo show";
}
}
执行一次photodownload
reply调用一次
--------3
--------4
success photo show
reply调用一次
--------3
--------4
success photo show
reply调用一次
--------3
--------4
success photo show
reply调用一次
--------3
--------4
success photo show
reply调用一次
--------3
--------4
success photo show
reply调用一次
--------3
--------4
success photo show
reply调用一次
--------3
--------4
success photo show
reply调用一次
--------3
--------4
success photo show
reply调用一次
--------3
--------4
success photo show
reply调用一次
--------3
--------4
success photo show
reply调用一次
--------3
--------4
success photo show
每次执行photoDownload函数,都会重新new一个QNetworkAccessManager 实例,这个干是不对的。
把accessManager 声明为成员变量,并在构造函数中new就可以了,connect也放在构造函数中。
如下:
//构造函数
PhotoList::PhotoList()
{
//构造函数中的其它部分代码
//....
//初始化QNetworkAccessManager实例,把accessManager声明成类的成员变量
accessManager = new QNetworkAccessManager(this);
connect(accessManager, SIGNAL(finished(QNetworkReply *)), this, SLOT(downloadReply(QNetworkReply *)));
}
//删掉new和connect部分
void PhotoList::photoDownload(QString qurl)
{
qDebug() << "执行一次photodownload";
QNetworkRequest request;
request.setUrl(QUrl(qurl));
accessManager->get(request);
}
你可以把connect绑定注释掉,然后运行程序看看还有没有执行,我猜测是不是有其他地方已经多次进行了connect绑定了!
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!