qt http连接

来源:互联网 发布:h41战列舰数据 编辑:程序博客网 时间:2024/06/05 16:10

其实就QNetworkAccessManager一个可以解决的事情,默认是异步的,通过get获取QNetworkReply *reply包后进行信号的关联,关联finish,readyread, progress等信号处理收到的reply以及进行文件的多段存以及进度的显示。

reply = manager->get(QNetworkRequest(url));    //下面关联信号和槽    connect(reply,SIGNAL(finished()),this,SLOT(httpFinished()));    //下载完成后    connect(reply,SIGNAL(readyRead()),this,SLOT(httpReadyRead()));    //有可用数据时    connect(reply,SIGNAL(downloadProgress(qint64,qint64)),            this,SLOT(updateDataReadProgress(qint64,qint64)));    //更新进度条
void Widget::httpReadyRead()   //有可用数据{    if (file) file->write(reply->readAll());  //如果文件存在,则写入文件}
void Widget::updateDataReadProgress(qint64 bytesRead, qint64 totalBytes) {    ui->progressBar->setMaximum(totalBytes); //最大值    ui->progressBar->setValue(bytesRead);  //当前值}

处理完之后记得deletelate调用。

然后实现同步的话可以加一个计时器然后进行QEventLoop的exec(),然后利用计时器超时或者reply的信号来exit这个loop然后其他都是一样的,实现阻塞而已


0 0
原创粉丝点击