QT-自定义日历小工具,支持在线获取左右铭和图片

  • 前言
  • 一、演示效果
  • 二、关键程序
  • 三、源码下载

前言

注意http安装环境,可以参考下面链接解决环境安装过程
https://editor.csdn.net/md/?articleId=127436373


一、演示效果

二、关键程序

代码如下:

#include "MyHttp.h"
#include <QSslSocket>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QNetworkAccessManager>
#include <QJsonDocument>
#include <QJsonObject>
#include <QEventLoop>
#include <QFile>
#include <QTimer>
#include <QCoreApplication>
MyHttp::MyHttp(QObject *parent): QObject(parent)
{qDebug() <<"===>"<< QSslSocket::sslLibraryBuildVersionString();m_pNaManager = new QNetworkAccessManager(this);QMetaObject::Connection connRet = QObject::connect(m_pNaManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(requestFinished(QNetworkReply*)));Q_ASSERT(connRet);updateImage();updateText();
}MyHttp::~MyHttp()
{}void MyHttp::updateText()
{m_request.setUrl(QUrl("http://www.52api.cc/yan/api.php"));m_pNaManager->get(m_request);
}void MyHttp::updateImage()
{m_request.setUrl(QUrl("http://www.52api.cc/acg/api.php?type=json"));m_pNaManager->get(m_request);
}void MyHttp::requestFinished(QNetworkReply* reply)
{// 获取http状态码QVariant statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);if (statusCode.isValid())qDebug() << "status code=" << statusCode.toInt();QVariant reason = reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString();if (reason.isValid())qDebug() << "reason=" << reason.toString();QNetworkReply::NetworkError err = reply->error();if (err != QNetworkReply::NoError) {qDebug() << "Failed: " << reply->errorString();}else {// 获取返回内容QString strJson = reply->readAll();if (strJson.indexOf("img_url") != -1){QJsonDocument jdoc = QJsonDocument::fromJson(strJson.toUtf8());QJsonObject jobject = jdoc.object();QJsonValue jvalueImage = jobject.value("img_url");QJsonValue jvalueWidth = jobject.value("img_width");QJsonValue jvalueHeight = jobject.value("img_height");qInfo() << jvalueImage.toString();qInfo() << jvalueWidth.toString();qInfo() << jvalueHeight.toString();QString strImg = QCoreApplication::applicationDirPath() +"/"+ "show.jpg";downloadFileFromUrl(jvalueImage.toString(), strImg);m_strImagePath = strImg;}else{m_strTextView = strJson;}}
}void MyHttp::downloadFileFromUrl(QString strUrl, QString strFilePath)
{qDebug() << strUrl << "    " << strFilePath;QFile file;file.setFileName(strFilePath);if (file.open(QIODevice::WriteOnly)){QByteArray byte = InitGetRequest(strUrl, "downImgFromUrl");file.write(byte);file.close();}
}QByteArray MyHttp::InitGetRequest(QString url, QString obj)
{//循环拼接QString baseUrl = url;//构造请求QNetworkRequest request;request.setUrl(QUrl(baseUrl));QNetworkAccessManager *manager = new QNetworkAccessManager();// 发送请求QNetworkReply *pReplay = manager->get(request);//开启一个局部的事件循环,等待响应结束,退出QEventLoop eventLoop;QObject::connect(pReplay, SIGNAL(finished()), &eventLoop, SLOT(quit()));//add timeout dealQTimer *tmpTimer = new QTimer();connect(tmpTimer, SIGNAL(timeout()), &eventLoop, SLOT(quit()));tmpTimer->setSingleShot(true);tmpTimer->start(60000);eventLoop.exec();tmpTimer->stop();if (pReplay->error() == QNetworkReply::NoError){qDebug() << QString("request %1 NoError").arg(obj);}else{qWarning() << QString("request %1 handle errors here").arg(obj);QVariant statusCodeV = pReplay->attribute(QNetworkRequest::HttpStatusCodeAttribute);//statusCodeV是HTTP服务器的相应码,reply->error()是Qt定义的错误码,可以参考QT的文档qWarning() << QString("request %1 found error ....code: %2 %3").arg(obj).arg(statusCodeV.toInt()).arg((int)pReplay->error());qWarning(qPrintable(pReplay->errorString()));}//获取响应信息QByteArray bytes = pReplay->readAll();return bytes;
}QString MyHttp::imagePath()
{return m_strImagePath;
}QString MyHttp::textView()
{return m_strTextView;
}

三、源码下载

https://download.csdn.net/download/u013083044/86797748

QT-自定义日历小工具,支持在线获取左右铭和图片相关推荐

  1. WordPress让文本小工具支持简码

    WordPress 的 "文本" 小工具是非常常用的,可以添加一些自定义的文本或者 Html 代码.但很多时候,我们需要在文本小工具里使用简码来添加一些更加丰富的内容. 默认情况下 ...

  2. win10计算机里的工具在哪里设置,win10系统桌面上添加自带日历小工具的设置办法...

    win10系统使用久了,好多网友反馈说关于对win10系统桌面上添加自带日历小工具设置的方法,在使用win10系统的过程中经常不知道如何去对win10系统桌面上添加自带日历小工具进行设置,有什么好的办 ...

  3. h5ai界面修改_h5ai-轻便又美观目录列表程序支持在线预览文本、图片、音频、视频等...

    h5ai是一款功能强大 php 文件目录列表程序,不需要数据库,支持在线预览文本.图片.音频.视频等.和昨天分享的Directory Lister又有不同,h5ai可以满足更多的应用场景. h5ai功 ...

  4. Web简单快捷的指纹识别小工具_在线指纹识别平台设计

    Web 指纹识别 本文通过分析 Web 指纹的检测对象.检测方法.检测原理及常用工具,设计了一个简易的指纹搜集脚本来协助发现新指纹,并提取了多个开源指纹识别工具的规则库并进行了规则重组,开发了一个简单 ...

  5. Qt 自定义日历控件

    1.ui 界面 2.运行界面  3.源代码  //.h头文件#ifndef MYCALENDAR_H #define MYCALENDAR_H#include <QWidget> #inc ...

  6. Python小工具——通过API获取天气预报

    Python通过API获取天气预报 闲来无事,用Python实现了一个小工具,通过实现API来获取当前的天气预报. 获取API的key 在阿凡达数据上查找天气预报相关的API,注册申请可获得一个key ...

  7. 【小工具】JS+PHP实现 屏幕截图粘贴图片上传+文字识别+一键复制识别结果

    今天为大家带来一款我自己写的小应用,由于最近在学习网课,而个人又是OneNote笔记爱好者,不做笔记就觉得课程学习不完整,但是懒就懒在实在不想打字啊,所以想到了直接截图用文字识别嘛,于是经过几个小时的 ...

  8. 小工具:基于颜色的视频和图片切割

    文章目录 1 前言 2 方案简述 3 效果 1 前言 最近做一个短视频相关的项目的时候,发现输入的视频有很多是有黑边的,有些可能是白边或者其他颜色的边.这对下游的模型处理有很大的影响.于是就写了一个自 ...

  9. vue自定义日历小组件

    vue自定义小日历组件 一.前言 自己开发的项目需要用到类似博客侧边栏小日历组件,觉得自己造一个比较随心所欲,更能满足自己的需求,所以决定自己开发一个.最终效果如图所示. 二.日历样式 我的这个日历组 ...

最新文章

  1. [Contest20170910]string
  2. vs2015安装与单元测试以及经过优化的算法
  3. shell中$*和$@ 两个都区别
  4. java 开发人员工具_每个Java开发人员都应该知道的10个基本工具
  5. 关于线程池的一段代码
  6. 前端工程化——Livereload和HMR、本地开发服务器
  7. linux skype 4.3,Linux下的Skype
  8. win10计算机磁盘图标,Win10系统硬盘图标怎么更换?Win10系统自定义硬盘图标的方法...
  9. 服务器显示未识别网络怎么办,未识别网络怎么解决
  10. 麻雀优化算法 SSA python实现
  11. android api 和版本对应表汇总
  12. Java日志框架:slf4j作用及其实现原理
  13. 性能测试——系统业务指标
  14. 1.1机器学习和深度学习综述(百度架构师手把手带你零基础实践深度学习原版笔记系列)
  15. 毕业设计 基于单片机的示波器设计与实现(源码+硬件+论文)
  16. pako java_基于pako.js实现gzip的压缩和解压功能示例
  17. 计算机及相关设备制造业2020,2020年电子信息制造业运行情况
  18. 万吨黄金做后盾 央行数字货币正式拉开序幕
  19. Docker(三):镜像仓库 - 公共仓库、私有仓库 - commit、tag、push
  20. 中国剩余定理及其C语言实现、WIn32实现

热门文章

  1. 【3D视觉创新应用竞赛作品系列​】多楼层室内环境下的三维几何重建
  2. 基于三维GIS系统的管道管理应用
  3. Linux查看进程命令
  4. 常用系统存储器SM区的定义
  5. FreeRTOS堆分配大小对任务数的影响
  6. oracle数据库bak文件恢复,Oracle使用备份控制文件恢复数据库
  7. EasyUI datagrid-detailview
  8. AOP+自定义注解实现字典翻译
  9. deglitch 技术_去毛刺技术,Deglitching,音标,读音,翻译,英文例句,英语词典
  10. Python基础教程(第3版)》笔记:第6章抽象