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