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. [置顶] 总结工作中常用到的linux命令
  2. 《Go 语言程序设计》读书笔记 (九) 命令工具集
  3. 信贷系统学习总结(3)——现金贷之产品架构和信审系统
  4. if else if与if if语句的区别
  5. 浏览器 pad android,360安全浏览器平板电脑Pad专用版-360安全浏览器HD 安卓版v1.1.0-PC6安卓网...
  6. 白话空间统计之:空间自相关
  7. [博应用官网]iTunes备份密码忘记了该如何解决?
  8. java字符串不足长度自动补0
  9. FEEDSKY获得风险投资
  10. 地震了,地震了!!!
  11. html语言无序下拉菜单,(4条消息)HTML语言标记详解
  12. linux运行lnk,LNK 文件扩展名: 它是什么以及如何打开它?
  13. 透彻解析信号地与电源地的关系
  14. 【视频课】10大真实金融量化交易案例,20多小时Python进阶课!
  15. 数值分析中对有效数字的定义
  16. CSDN怎么转载别人的博客(转载)
  17. codeforces#1166F. Vicky's Delivery (Service并查集+启发式合并)
  18. 学校公共计算机保用规定,湖南中医药大学涉密计算机和涉密移动存储介质保密管理规定...
  19. 苏宁易购api电商接口
  20. asp php base64 加密解密,base64加密解密_php base64_decode 解码方法

热门文章

  1. 用pytorch写一段四元数卷积
  2. 通过.js.map文件反编译 获取前端源码
  3. 移动广告作弊流量的浅潜规则
  4. mysql进入数据库命令_mysql 数据库基础命令
  5. Ubuntu16.04 挂载硬盘(简单实用)
  6. Redis分片的实现
  7. uni-app音频组件控制的使用
  8. 大润发,盒马,沃尔玛数据获取以及加入购物车功能
  9. springboot集成lettuce
  10. Qt QFile文件操作详解