QT-自定义日历小工具,支持在线获取左右铭和图片
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-自定义日历小工具,支持在线获取左右铭和图片相关推荐
- WordPress让文本小工具支持简码
WordPress 的 "文本" 小工具是非常常用的,可以添加一些自定义的文本或者 Html 代码.但很多时候,我们需要在文本小工具里使用简码来添加一些更加丰富的内容. 默认情况下 ...
- win10计算机里的工具在哪里设置,win10系统桌面上添加自带日历小工具的设置办法...
win10系统使用久了,好多网友反馈说关于对win10系统桌面上添加自带日历小工具设置的方法,在使用win10系统的过程中经常不知道如何去对win10系统桌面上添加自带日历小工具进行设置,有什么好的办 ...
- h5ai界面修改_h5ai-轻便又美观目录列表程序支持在线预览文本、图片、音频、视频等...
h5ai是一款功能强大 php 文件目录列表程序,不需要数据库,支持在线预览文本.图片.音频.视频等.和昨天分享的Directory Lister又有不同,h5ai可以满足更多的应用场景. h5ai功 ...
- Web简单快捷的指纹识别小工具_在线指纹识别平台设计
Web 指纹识别 本文通过分析 Web 指纹的检测对象.检测方法.检测原理及常用工具,设计了一个简易的指纹搜集脚本来协助发现新指纹,并提取了多个开源指纹识别工具的规则库并进行了规则重组,开发了一个简单 ...
- Qt 自定义日历控件
1.ui 界面 2.运行界面 3.源代码 //.h头文件#ifndef MYCALENDAR_H #define MYCALENDAR_H#include <QWidget> #inc ...
- Python小工具——通过API获取天气预报
Python通过API获取天气预报 闲来无事,用Python实现了一个小工具,通过实现API来获取当前的天气预报. 获取API的key 在阿凡达数据上查找天气预报相关的API,注册申请可获得一个key ...
- 【小工具】JS+PHP实现 屏幕截图粘贴图片上传+文字识别+一键复制识别结果
今天为大家带来一款我自己写的小应用,由于最近在学习网课,而个人又是OneNote笔记爱好者,不做笔记就觉得课程学习不完整,但是懒就懒在实在不想打字啊,所以想到了直接截图用文字识别嘛,于是经过几个小时的 ...
- 小工具:基于颜色的视频和图片切割
文章目录 1 前言 2 方案简述 3 效果 1 前言 最近做一个短视频相关的项目的时候,发现输入的视频有很多是有黑边的,有些可能是白边或者其他颜色的边.这对下游的模型处理有很大的影响.于是就写了一个自 ...
- vue自定义日历小组件
vue自定义小日历组件 一.前言 自己开发的项目需要用到类似博客侧边栏小日历组件,觉得自己造一个比较随心所欲,更能满足自己的需求,所以决定自己开发一个.最终效果如图所示. 二.日历样式 我的这个日历组 ...
最新文章
- [Contest20170910]string
- vs2015安装与单元测试以及经过优化的算法
- shell中$*和$@ 两个都区别
- java 开发人员工具_每个Java开发人员都应该知道的10个基本工具
- 关于线程池的一段代码
- 前端工程化——Livereload和HMR、本地开发服务器
- linux skype 4.3,Linux下的Skype
- win10计算机磁盘图标,Win10系统硬盘图标怎么更换?Win10系统自定义硬盘图标的方法...
- 服务器显示未识别网络怎么办,未识别网络怎么解决
- 麻雀优化算法 SSA python实现
- android api 和版本对应表汇总
- Java日志框架:slf4j作用及其实现原理
- 性能测试——系统业务指标
- 1.1机器学习和深度学习综述(百度架构师手把手带你零基础实践深度学习原版笔记系列)
- 毕业设计 基于单片机的示波器设计与实现(源码+硬件+论文)
- pako java_基于pako.js实现gzip的压缩和解压功能示例
- 计算机及相关设备制造业2020,2020年电子信息制造业运行情况
- 万吨黄金做后盾 央行数字货币正式拉开序幕
- Docker(三):镜像仓库 - 公共仓库、私有仓库 - commit、tag、push
- 中国剩余定理及其C语言实现、WIn32实现
热门文章
- 【3D视觉创新应用竞赛作品系列​】多楼层室内环境下的三维几何重建
- 基于三维GIS系统的管道管理应用
- Linux查看进程命令
- 常用系统存储器SM区的定义
- FreeRTOS堆分配大小对任务数的影响
- oracle数据库bak文件恢复,Oracle使用备份控制文件恢复数据库
- EasyUI datagrid-detailview
- AOP+自定义注解实现字典翻译
- deglitch 技术_去毛刺技术,Deglitching,音标,读音,翻译,英文例句,英语词典
- Python基础教程(第3版)》笔记:第6章抽象