QT--HTTP图片下载器
QT--HTTP图片下载器
1.http使用前提
- QT += core gui network //必须加上network
2.必须头文件
- #include <QNetworkAccessManager> //三个http必须头文件
- #include <QNetworkReply>
- #include <QNetworkRequest>
3.widget.h文件
- #ifndef WIDGET_H
- #define WIDGET_H
-
- #include <QWidget>
- #include <QNetworkAccessManager>
- #include <QNetworkReply>
- #include <QNetworkRequest>
- #include <QPainter>
- #include <QPoint>
-
- namespace Ui {
- class Widget;
- }
-
- class Widget : public QWidget
- {
- Q_OBJECT
-
- public:
- explicit Widget(QWidget *parent = nullptr);
- ~Widget();
-
- QPixmap pixmap;
- QPainter *painter; //绘制显示图片
- QNetworkAccessManager *manager;
- QNetworkReply *reply;
-
- void paintEvent(QPaintEvent *event); //绘图
- void Init();
- private slots:
- void doProcessReadyRead();
- void on_pushButton_clicked();
- void doProceesFinished();
- private:
- Ui::Widget *ui;
- };
-
- #endif // WIDGET_H
-
4.widget.cpp文件
- #include "widget.h"
- #include "ui_widget.h"
- #include <QDebug>
- #include <QFile>
- #include <QPixmap>
- Widget::Widget(QWidget *parent) :
- QWidget(parent),
- ui(new Ui::Widget)
- {
- ui->setupUi(this);
-
- Init();
-
- }
-
- Widget::~Widget()
- {
- delete ui;
- }
-
- void Widget::Init()
- {
- manager = new QNetworkAccessManager(this);
- }
-
- void Widget::doProcessReadyRead() //读取储存图片
- {
- qDebug()<< "";
- QByteArray str = reply->readAll();
- qDebug() << str;
- ui->textEdit->append(str);
-
- qDebug() << pixmap.loadFromData(str);
-
- pixmap.save(QString("E:/test.jpg"), "jpg");
-
- QString path = "E:/1.jpg"; //打开/创建文件
- QFile file(path);
- if (!file.open(QIODevice::WriteOnly|QIODevice::Append))
- {
- qDebug() <<"打开失败";
- return;
- }
- else
- {
- file.write(str);
- }
- }
-
- void Widget::paintEvent(QPaintEvent *event) //绘制图片
- {
- painter = new QPainter(this);
- QRectF target(,, this->width(), this->width());
- QRectF source(,, this->width(), this->width());
- QPixmap pixmap_background("E:/1.jpg");
- painter->drawPixmap(target, pixmap_background, source);
-
- update();
- }
-
- void Widget::on_pushButton_clicked()
- {
- QNetworkRequest requst;
- requst.setRawHeader(QByteArray("User-Agent"), QByteArray("Sun, 06 Nov 1994 08:49:37 GMT")); //设置头
- QString url_str = ui->lineEdit->text();
- QUrl url;
- url.setUrl(url_str);
- requst.setUrl(url);
- reply = manager->get(requst); //发送请求
-
- connect(reply, &QIODevice::readyRead, this, &Widget::doProcessReadyRead); //收到可读信号
- connect(reply, QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error), //收到异常信号
- [=](QNetworkReply::NetworkError code)
- {
- switch((int)code)
- {
- case QNetworkReply::ConnectionRefusedError:
- qDebug() << "远程服务器拒绝连接(服务器不接受请求)";
- break;
- case QNetworkReply::HostNotFoundError:
- qDebug() << "找不到远程主机名(无效的主机名)";
- break;
- case QNetworkReply::TimeoutError:
- qDebug() << "与远程服务器的连接超时";
- break;
- default:
- break;
- }
- });
- connect(reply, &QNetworkReply::finished,this,&Widget::doProceesFinished);
-
- }
-
- void Widget::doProceesFinished()
- {
- qDebug() <<"结束";
- }
-
5.widget.ui文件
QT--HTTP图片下载器的更多相关文章
- Qt+Python开发百度图片下载器
一.资源下载地址 https://www.aliyundrive.com/s/jBU2wBS8poH 本项目路径:项目->收费->百度图片下载器(可试用5分钟) 安装包直接下载地址:htt ...
- .NET破解之图片下载器
自去年五月加入吾爱后,学习了三个月,对逆向破解产生了深厚的兴趣,尤其是对.NET方面的分析:但由于这一年,项目比较忙,事情比较多,破解这方面又停滞了许久,不知道还要好久. 前些天,帮忙批量下载QQ相册 ...
- Python实战:美女图片下载器,海量图片任你下载
Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习 ...
- 第三百四十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—meta属性返回指定值给回调函数—Scrapy内置图片下载器
第三百四十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—meta属性返回指定值给回调函数—Scrapy内置图片下载器 编写spiders爬虫文件循环 ...
- 二十 Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—meta属性返回指定值给回调函数—Scrapy内置图片下载器
编写spiders爬虫文件循环抓取内容 Request()方法,将指定的url地址添加到下载器下载页面,两个必须参数, 参数: url='url' callback=页面处理函数 使用时需要yield ...
- Bing图片下载器(Python实现)
分享一个Python实现的Bing图片下载器.下载首页图片并保存到到当前目录.其中用到了正则库re以及Request库. 大致流程如下: 1.Request抓取首页数据 2.re正则匹配首页图片URL ...
- Qt 简易图片播放器
一.前言 使用 Qt 制作了一个简单的图片播放器,点击 "浏览按钮" 浏览图片所在目录,目录中的所有图片缩小图标和名称会显示在左侧的图片列表中,点击列表中的图片项,可以在右侧区域的 ...
- python爬虫实战(3)--图片下载器
本篇目标 1.输入关键字能够根据关键字爬取百度图片 2.能够将图片保存到本地文件夹 1.URL的格式 进入百度图片搜索apple,这时显示的是瀑布流版本,我们选择传统翻页版本进行爬取.可以看到网址为: ...
- 爬虫框架Scrapy之案例三图片下载器
items.py class CoserItem(scrapy.Item): url = scrapy.Field() name = scrapy.Field() info = scrapy.Fiel ...
随机推荐
- 如何使用TG Pro for Mac的自定义控制功能完全覆盖系统
在某些情况下,可能需要完全覆盖系统风扇控制并使用自定义算法.通过将Auto Boost规则的强大功能与覆盖系统功能相结合,可以使用TG Pro.请记住,当风扇模式设置为Auto Boost时,这将完全 ...
- JavaBean动态添加删除属性
1.cglib BeanGenerator beanGenerator = new BeanGenerator(); beanGenerator.addProperty("id", ...
- IT兄弟连 HTML5教程 W3C盒子模型
日常生活中所见的盒子也就是能装东西的一种箱子,如果家里的东西很多,那么就需要按类别装到不同的箱子中.网页中的内容表现也是一样的,如果页面内容比较多,又想让页面更整洁.更美观.有很好的用户体验,则也需要 ...
- Java面试官:兄弟,你确定double精度比float低吗?
我有一个朋友,叫老刘,戴着度数比我还高的近视镜,显得格外的"程序员":穿着也非常"不拘一格",上半身是衬衣西服,下半身是牛仔裤运动鞋. 我和老刘的感情非常好,每 ...
- PHP-FPM 使用(含多站点多端口)
PHP-FPM 使用 PHP-FPM 是在 Linux 环境下用来管理调度 PHP 执行的调度器,源码安装时会自动安装,PHP 安装可参考Centos 下安装 PHP (新) 查看版本 # php-f ...
- Python中使用class(),面向对象有什么优势
首先我是辣鸡,然后这个问题的确有点意思 首先,类是一个集合,包含了数据,操作描述的一个抽象集合 你可以首先只把类当做一个容器来使用 class Cycle: def __init__(self,r): ...
- Larave中CSRF攻击
1.什么是CSRF攻击? CSRF是跨站请求伪造(Cross-site request forgery)的英文缩写\ Laravel框架中避免CSRF攻击很简单 ...
- Java生鲜电商平台-优惠券功能设计与开发(小程序/APP)
Java生鲜电商平台-优惠券功能设计与开发(小程序/APP) 说明:Java生鲜电商平台-优惠券功能设计与开发(小程序/APP) 目录 1.项目背景与需求分析 2.需求目的与功能点列表 3.业务逻辑 ...
- 【翻译】全新16英寸MacBook Pro评测:开发人员的梦想成真
要问现在适合开发者用的笔记本,市面上还是有很多选择的,比如Dell的XPS系列,外星人系列(游戏也是杠杠滴),联想拯救者系列,还有形形色色的高配机型,价格也从几千到几万不等. 但是,笔吧评测室的猪哥说 ...
- 构建Electron的常见问题(Mac)
背景 起因是产品的需求,需要更换Electron为底层平台,但因为会有不少定制化的功能要实现,必须自己实现此类内容,所以也就导致必须自己编译Electron的源代码. 整个构建过程,看Electron ...