QT天气预报
json
理论
什么是JSON?

规则
被大括号包括的是JSON对象,被中括号包括的是JSON数组.
JSON数组
JSON对象


实验
构建JSON
用代码实现如下json内容:

//构建JSON
void WirteJson()
{QJsonObject rootObject;//1.插入name字段rootObject.insert("name","china");//2.插入info字段QJsonObject infoObj;infoObj.insert("capital","beijing");infoObj.insert("asian",true);infoObj.insert("founded",1949);rootObject.insert("info",infoObj);//3.插入省份字段QJsonObject provinsSD;provinsSD.insert("name","shandong");provinsSD.insert("capital","jinan");QJsonObject provinsZJ;provinsZJ.insert("name","zhejiang");provinsZJ.insert("capital","hangzhou");QJsonArray provinArray;provinArray.append(provinsSD);provinArray.append(provinsZJ);rootObject.insert("provinces",provinArray);//4.将rootObj转换为json字符串QJsonDocument doc(rootObject);QByteArray json=doc.toJson();//5.打印输出qDebug()<<QString(json).toUtf8().data();//6.将json字符串写入到文件QFile file("D:\\QTproject\\JSON.json");file.open(QFile::WriteOnly);file.write(json);file.close();
}

解析JSON
//解析json字符串
void JsonFrom()
{//1.读取文件QFile file("D:\\QTproject\\JSON.json");file.open(QFile::ReadOnly);QByteArray json=file.readAll();file.close();//获取一下json源QJsonDocument doc=QJsonDocument::fromJson(json);if(!doc.isObject()){qDebug()<<"not is a JSONObject!";return;}//name字段QJsonObject obj=doc.object();QStringList Keys=obj.keys();for(int i=0;i<Keys.size();i++){//获取key-valueQString key=Keys[i];QJsonValue value=obj.value(key);if(value.isBool()){qDebug()<<key<<":"<<value.toBool();}else if(value.isString()){qDebug()<<key<<":"<<value.toString();}else if(value.isDouble()){qDebug()<<key<<":"<<value.toInt();}//info字段else if(value.isObject()){qDebug()<<key<<":";QJsonObject infoObj=value.toObject();QString capital=infoObj["capital"].toString();bool asian=infoObj["asian"].toBool();int founded=infoObj["founded"].toInt();qDebug()<<"capital"<<" : "<<capital;qDebug()<<"asian"<<" : "<<asian;qDebug()<<"founded"<<" : "<<founded;}//省份字段else if(value.isArray()){qDebug()<<key<<":";QJsonArray provinceArray=value.toArray();for(int i=0;i<provinceArray.size();i++){QJsonObject provinceObj=provinceArray[i].toObject();QString name=provinceObj["name"].toString();QString capital=provinceObj["capital"].toString();qDebug()<<"name"<<" : "<<name;qDebug()<<"capital"<< " : "<<capital;}}}
}

HTTP
HTTP理论








布局

代码实现
取消主界面自带边框
setWindowFlag(Qt::FramelessWindowHint); //设置窗口无边框setFixedSize(width(),height()); //设置窗口固定大小
设置右键弹出退出按钮
mExitAct->setText("退出");mExitAct->setIcon(QIcon(":/res/close.ico"));mExitMenu->addAction(mExitAct); //将我们的行为添加到出菜单里
响应鼠标事件
//弹出右键菜单
void MainWindow::contextMenuEvent(QContextMenuEvent *event)
{mExitMenu->exec(QCursor::pos()); //传送鼠标位置
}
绑定信号槽
connect(mExitAct,QAction::triggered,this,[=]{qApp->exit(0);});

去掉了系统自带的标题栏就无法拖动窗口了,我们需要自己实现通过鼠标拖动窗口的功能.
实现自定义拖动窗体功能
定义一个变量
QPoint mOffset; //鼠标离左上角的距离
定义两个方法
//处理鼠标点击事件 void mousePressEvent(QMouseEvent *event);//处理鼠标移动事件void mouseMoveEvent(QMouseEvent *event);
方法实现
//处理鼠标点击事件
void MainWindow::mousePressEvent(QMouseEvent *event)
{mOffset = event->globalPos() - this->pos();
}//处理鼠标移动事件
void MainWindow::mouseMoveEvent(QMouseEvent *event)
{this->move(event->globalPos() - mOffset);
}当鼠标点击时会调
用mousePressEvent()函数,获取鼠标点击的位置,当鼠标按住移动的时候会调用 mouseMoveEvent()函数,会用鼠标当前位置减去左上角位置就是移动的位置.从而实现拖动窗体的效果.

相关文章:
QT天气预报
json 理论 什么是JSON? 规则 被大括号包括的是JSON对象,被中括号包括的是JSON数组. JSON数组JSON对象 实验 构建JSON 用代码实现如下json内容: //构建JSON void WirteJson() {QJsonObject rootObject;//1.插入name字段rootObject.insert("name","china&quo…...
JavaWeb中处理 Web 请求的方式总结
文章目录 JavaWeb中处理 Web 请求的方式总结1. 原始的 Servlet 方式1.1. 环境搭建**创建 Maven 或 Gradle 项目**:**添加 Servlet 依赖**:**创建 Servlet 类**:**配置项目**:**配置 Tomcat**: 1.2. 路由机制1.3. 示例代…...
React的事件与原生事件的执行顺序?
react自身实现了一套自己的事件机制,包括事件注册、事件的合成、事件冒泡、事件派发等,虽然和原生的是两码事,但也是基于浏览器的事件机制下完成的。 react 的所有事件并没有绑定到具体的dom节点上而是绑定在了document 上,然后由…...
【Java】Runtime与Properties获取系统信息
Java系列文章目录 补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 文章目录 Java系列文章目录一、前言二、学习内容:三、问题描述四、解决方案:4.1 代码4.2 运行结果 五、总结: 一、前言 这些都被淘汰比较少用了…...
基于SpringBoot的社团管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于JavaSpringBootVueMySQL的社团管理系统【附源码文档】、…...
UE5.3_跟一个插件—Socket.IO Client
网上看到这个插件,挺好! 项目目前也没有忙到不可开交,索性跟着测一下吧: 商城可见,售价72.61人民币! 但是,git上有仓库哦,免费!! 跟着链接先准备起来: Documentation: GitHub - getnamo/SocketIOClient-Unreal: Socket.IO client plugin for the Unreal Engin…...
鸿蒙轻内核A核源码分析系列七 进程管理 (1)
往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 轻内核A核源码分析系列一 数据结构-双向循环链表 轻内核A核源码分析系列二 数据结构-位图操作 轻内核A核源码分析系列三 物理内存(1࿰…...
qt QGraphicsScene场景坐标和场景内GraphicsItem局部坐标的相互转换
为了更清晰地解释场景坐标与局部坐标之间的转换过程,我们可以通过一个简单的实例来演示如何赋值场景坐标,并将其转换为图形项的局部坐标。 实例步骤 假设我们有一个场景 QGraphicsScene 和一个矩形图形项 QGraphicsRectItem,矩形的大小为 1…...
Windows与linux中docker的安装与使用
windos中安装使用docker 下载Docker_Desktop 安装包进入docker官网下载Docker_Desktop: https://www.docker.com/启用wsl 我们搜索“启用或关闭Windows功能”,打开后勾选适用于Linux的Windows 子系统 Docker_Desktop设置 出现Docker Engine stopp…...
some electronic products
纽扣电池 button cell 运动手环 sports wristband 智能手环 smart bracelet 皮卡丘夜灯 pikachu night lamp 数字显示充电器 Charger with a digital display 磁吸无线充 magnetic wireless charger 直流电机调速器 DC motor speed controller 继电器模块 relay module 锂离子电…...
刘润《关键跃升》读书笔记7
沟通: 想明⽩,说清楚,能接受 团队沟通的正确⽅式可以⽤9个字来概括:想明⽩,说清楚,能接受 (⻅图4-1)想明⽩ 有时经理跟⼈沟通,讲完之后却⽆奈地对员⼯说,你怎…...
带参宏定义
#define WM_EVENT_DECLARE_GROUP(group) extern wm_event_group_t const group 宏定义的结构: #define:这是C语言中的预处理指令,用来定义宏。宏的作用是替换代码中的特定部分,类似于全局的文本替换。这里定义的宏名称是 WM_EVE…...
java流
99. ByteArrayOutputStream转化为ByteArrayInputStream ByteArrayOutputStream baos xxx;i new ByteArrayInputStream(baos.toByteArray())100.将inputstream转换为byte[] https://blog.csdn.net/yogima/article/details/128500056 100.1 方式一 直接使用IOUtils byte[] …...
Java ArrayList扩容机制 (源码解读)
结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义 1:数组默认长度 2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ÿ…...
『功能项目』管理器基类【38】
我们打开上一篇37单例模式框架的项目, 本章要做的事情是编写管理器基类 首先创建脚本:ManagerBase.cs using UnityEngine; public abstract class ManagerBase : MonoBehaviour{public virtual void Init() { } } public class ManagerBase<T> : …...
Flex布局最后一行元素的对齐的解决方案
问题的产生 使用Flex布局,设置justify-content: space-between;让元素在主轴上两队对齐。 <div class"box"><div class"item">1</div><div class"item">2</div><div class"item">3&l…...
【ShuQiHere】上章:计算与计算机的基础概念
【ShuQiHere】✨ 在当今数字化社会,计算机已无处不在,从智能手机到人工智能应用,影响深远。然而,计算机并非一开始就如此强大。它经历了从手动工具、机械装置到电子计算机的演变。本章将回顾计算与算法的基本概念,探讨…...
前端框架有哪些?全面解析主流前端框架
一、React React 是由 Facebook 开发和维护的一个前端框架,它专注于构建用户界面。React 采用组件化的开发模式,允许开发者将用户界面拆分成多个可复用的组件。 主要特点 组件化: React 的核心是组件,它允许开发者将界面拆分成独立的、可复…...
4G MQTT网关在物联网应用中的优势-天拓四方
随着物联网(IoT)技术的飞速发展,各种设备和系统之间的互联互通变得日益重要。MQTT(Message Queuing Telemetry Transport)作为一种轻量级的发布/订阅消息传输协议,因其高效、可靠、简单的特性,在…...
【网上商城项目结构】
文章目录 前言一、网站前台二、运营商后台三、商家管理后台四、系统架构五、数据库设计六、关键技术总结 前言 网上商城项目结构通常包括网站前台、运营商后台和商家管理后台三个子系统,以及多个功能模块,如门户、搜索、购物车、订单、秒杀、个人中心等…...
1.NCM格式解密技术全解析:从原理到实战的音乐自由之路
1.NCM格式解密技术全解析:从原理到实战的音乐自由之路 【免费下载链接】ncmdump ncmdump - 网易云音乐NCM转换 项目地址: https://gitcode.com/gh_mirrors/ncmdu/ncmdump 问题引入:当音乐遭遇数字围栏 "花了千元订阅的无损音乐,…...
LVGL项目实战:用思源字体让嵌入式屏幕完美显示中文(Gui Guider 1.7.1+版本指南)
LVGL项目实战:用思源字体让嵌入式屏幕完美显示中文(Gui Guider 1.7.1版本指南) 在嵌入式UI开发中,中文显示一直是开发者面临的棘手问题之一。传统方案需要手动提取字模、管理字库,既耗时又容易出错。而LVGL结合Gui Gui…...
代码随想录算法训练营第十天|LeetCode 232 用栈实现队列、LeetCode 225 用队列实现栈、LeetCode 20 有效的括号、LeetCode 1047 删除字符串中的所有相邻重复项
参考文章均来自代码随想录 栈与队列理论文章链接 LeetCode 232 用栈实现队列 参考文章链接 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(in…...
绝美辛夷花海!九皇山春日限定,羌族古寨里的粉色浪漫
九皇山位于四川省绵阳市北川羌族自治县桂溪镇,是国家4A级旅游景区,地处四川盆地西北边缘与川西高原的过渡地带,属典型喀斯特地貌,核心风貌兼具丰富的自然生态景观与深厚的羌族人文底蕴,景区占地面积25平方公里…...
Step3-VL-10B-Base与C语言基础教程:嵌入式开发入门
Step3-VL-10B-Base与C语言基础教程:嵌入式开发入门 1. 引言 想学嵌入式开发但不知道从哪开始?很多新手卡在第一步:既要学C语言,又要懂硬件,感觉门槛很高。其实没那么复杂,用对方法就能快速上手。 这个教…...
【无线通信】基于统计信道的低复杂度旋转和位置优化为6D可移动天线无线通信附Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...
如何通过FCEUX实现NES游戏的完美模拟?超实用指南
如何通过FCEUX实现NES游戏的完美模拟?超实用指南 【免费下载链接】fceux FCEUX, a NES Emulator 项目地址: https://gitcode.com/gh_mirrors/fc/fceux 5个步骤3个技巧,让你快速掌握NES模拟器 核心价值:重温和探索经典游戏的最佳选择 …...
2026搜索量暴涨!这几款配音软件火到刷屏
如果你最近刷短视频,一定注意到了——声音比画面更抓人。从悬疑解说的低沉旁白,到小说推文的多角色演绎,再到带货视频的情绪播报,一条爆款视频的背后,往往藏着一款好用的配音软件。2026年,AI配音市场迎来爆…...
极客专属:OpenClaw+百川2-13B打造个人CLI智能助手
极客专属:OpenClaw百川2-13B打造个人CLI智能助手 1. 为什么开发者需要命令行智能助手 作为一个长期与终端打交道的开发者,我每天要重复执行大量机械操作:查看日志、运行测试、整理结果。这些工作虽然简单,却极其消耗精力。直到我…...
让ai成为你的vue开发搭档,用快马智能优化代码性能与结构
让AI成为你的Vue开发搭档,用快马智能优化代码性能与结构 最近在开发一个Vue3项目时,遇到了几个性能瓶颈问题。作为一个前端开发者,性能优化是绕不开的话题。幸运的是,借助AI辅助开发工具,这些问题都能得到更高效的解决…...
