内容简介:Qt网络之HTTP编程(2)
二、功能扩展
通过上面的例子可以看到,Qt中编写基于HTTP协议的程序是十分简单的,只有十几行代码。不过,一般我们下载文件都想要看到下载进度。下面我们就更改上面的程序,让它可以下载任意的文件,并且显示下载进度。
1.我们更改widget.ui文件如下图。
这里我们添加了一个Line Edit ,一个Label ,一个Progress Bar 和一个Push Button ,它们的熟悉保持默认即可。我们在Push Button上点击鼠标右键,选择Go to slot ,然后选择clicked() ,进入其单击事件槽函数,现在我们先不写代码。
在写代码之前,我们先介绍一下整个程序执行的流程:
开始我们先让进度条隐藏。当我们在Line Edit中输入下载地址,点击下载按钮后,我们应用输入的下载地址,获得文件名,在磁盘上新建一个文件,用于保存下载的数据,然后进行链接,并显示进度条。在下载过程中,我们将每次获得的数据都写入文件中,并更新进度条,在接收完文件后,我们重新隐藏进度条,并做一些清理工作。
根据这个思路,我们开始代码的编写。
2.我们在widget.h文件中添加代码,完成后其部分内容如下。
class Widget : public QWidget {
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
void startRequest(QUrl url); //请求链接
protected:
void changeEvent(QEvent *e);
private:
Ui::Widget *ui;
QNetworkAccessManager *manager;
QNetworkReply *reply;
QUrl url; //存储网络地址
QFile *file; //文件指针
private slots:
void on_pushButton_clicked(); //下载按钮的单击事件槽函数
void httpFinished(); //完成下载后的处理
void httpReadyRead(); //接收到数据时的处理
void updateDataReadProgress(qint64,qint64); //更新进度条
};
3.widget.cpp文件中的相关内容如下。
(1)构造函数中:
manager = new QNetworkAccessManager(this); ui->progressBar->hide();
我们在构造函数中先隐藏进度条。等开始下载时再显示它。
(2)下载按钮的单击事件槽函数。
void Widget::on_pushButton_clicked() //下载按钮
{
url = ui->lineEdit->text();
//获取在界面中输入的url地址,如: http://zz.onlinedown.net/down/laolafangkuaijin.rar
QFileInfo info(url.path());
QString fileName(info.fileName());
//获取文件名
if (fileName.isEmpty()) fileName = “index.html”;
//如果文件名为空,则使用“index.html”,
//例如使用“http://www.yafeilinux.com”时,文件名就为空
file = new QFile(fileName);
if(!file->open(QIODevice::WriteOnly))
{ //如果打开文件失败,则删除file,并使file指针为0,然后返回
qDebug() << “file open error”;
delete file;
file = 0;
return;
}
startRequest(url); //进行链接请求
ui->progressBar->setValue(0); //进度条的值设为0
ui->progressBar->show(); //显示进度条
}
这里我们先从界面中获取输入的地址,然后分解出文件名。因为地址中可能没有文件名,这时我们就使用一个默认的文件名。然后我们用这个文件名新建一个文件,这个文件会保存到工程文件夹的debug文件夹下。下面我们打开文件,然后进行链接,并显示进度条。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
社群营销与运营/互联网+新媒体营销规划丛书
秦阳//秋叶|总主编:秋叶 / 人民邮电出版社 / 2017-5 / 45.00元
《社群营销与运营》共分6章。第1章重点介绍了社群营销的起因、概念、构成、价值和评估模型,引导读者全面认识社群以及社群营销;第2章介绍了如何从无到有、从小到大建设一个社群的手法和注意事项;第3章重点介绍维持社群活跃度的各种技巧;第4章介绍了组织一场社群线下活动五个阶段的执行方案;第5章介绍了如何从无到有、由弱到强地构建社群运营团队;第6章介绍如何正确看待社群商业变现以及社群商业变现的三大模式和四个基......一起来看看 《社群营销与运营/互联网+新媒体营销规划丛书》 这本书的介绍吧!