没有合适的资源?快使用搜索试试~ 我知道了~
首页基于HTTP的Qt下载上传研究
资源详情
资源评论
资源推荐

基于 HTTP 的 Qt 下载上传研究
by 捉不住的鼬鼠
2018-10-27

目 录
1 开始 .....................................................................................................................................................................3
2 实现 Qt 下载器 ................................................................................................................................................3
2.1 环境 ........................................................................................................................................................3
2.2 include 问题(前向声明) ..............................................................................................................3
2.3 下载器代码 ...........................................................................................................................................6
2.3.1 mainwindow.h .........................................................................................................................6
2.3.2 mainwindow.cpp .....................................................................................................................7
2.3.3 pro 文件 .....................................................................................................................................9
2.4 效果 ........................................................................................................................................................9
2.5 学习 ........................................................................................................................................................9
3 实现 Qt 上传 .................................................................................................................................................. 10
3.1 nginx 上传配置 ................................................................................................................................. 10
3.1.1 nginx upload 模块编译安装 ............................................................................................ 11
3.1.2 nginx 上传 server 配置....................................................................................................... 14
3.2 Qt 上传客户端 ................................................................................................................................... 19
4 总结 .................................................................................................................................................................. 20

1 开始
最近开始了 Qt 上传下载任务的研究,初步调查学习发现基于 HTTP 的上传下载比较方
便实现,甚至还可以改进做到断点续传并添加多线程等。Qt 是有 TCP 支持的,不过用 socket
感觉还是麻烦了些,因此这些任务还是基于 HTTP 来做。由于以前 Qt 也就简单使用界面做
过一些开发,所以实际水平还是新手,尤其是 C++还需要很多积累,文档有理解不到位的地
方也在所难免。
2 实现 Qt 下载器
2.1 环境
Windows 下,Qt5.11 开发。本来 VS2017 也安装了 Qt 插件,但是直接创建项目和 Qt 的
有些差距,还是习惯自带 pro 文件那样的项目,而且不用手动配置 C++包含目录等。
2.2 include 问题(前向声明)
这个问题是这样的,还未注意到前向声明:
新建的项目,就是 qt 创建的 widgets 项目,jpro 文件中是含有 QT += core gui 的。我
以前用 qt 的模块都是用 include,如:
#include <QMessageBox>
这样就能用来抛出信息或者警告什么的。这一次我却一不小心注意到,qtcore 目录下的
模块,貌似因为 QT += core 的原因,不用 include 了,如 qtstring。实际上并不是,因为这
里 QMainWindow 会 include qtwidgetsglobal.h,该文件又包含 qtguiglobal.h,该文件又包
含 qglobal.h,该文件会含有一些 qtcore 的包含信息,如<QtCore/qconfig.h>。但是我没看
到如 qtstring 的包含,也不打算继续找哪里包含了,因为我在提示框看到有提示,说明包含
成功了。
鉴于这个结论,我都不写 include,除非没有变色提示了才加上,这样问题来了。表现
为两个,一个是 VS 中会找混乱,一个是 Qt 中虽然声明个变量没事,但用的时候提示错误。
VS 中的一个例子是 QDataStream 有提示,由于没加 include,会提示用了不完整的类型,因
为其定位到了 qglobal.h:

而加了则正确定位到 qdatastream.h:
QDataStream 的问题,不加 include 在 Qt 中编译通过,为此我觉得 VS 找得不准确,或
者我添加的 VC++外部包含目录顺序有些问题。
因此我就还是在 Qt 下开发,以为 Qt 的提示准确,但是也遇到个类似的问题:
这 个 是 mainwindows.h 中 的 , 没 有 include QNetworkReply , 提 示 正 常 , 但 是
mainwindows.cpp 中却提示不完整:
到这里提到了 forward declaration,我好像意识到了什么。这个 QNetworkReply 虽然 Qt
中用 F2 跳转到定义是对应了正确的头文件,但是编译使用时却到了 access manager 的头文
件的前向声明处:
剩余19页未读,继续阅读


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论1