qt实现日历和天气显示(QCalendarWidget)

news2024/11/24 4:14:10

完成展示效果:

 本项目主要有QCalendarWidget类和获取天气api

一、QCalendarWidget

关键代码:

    ui->mCalendarWidget->setHorizontalHeaderFormat(QCalendarWidget :: ShortDayNames);//星期一、二
    ui->mCalendarWidget->setVerticalHeaderFormat(QCalendarWidget::NoVerticalHeader);//删除左侧周数
    ui->mCalendarWidget->setGridVisible(false);//删除网格
    ui->mCalendarWidget->setFirstDayOfWeek(Qt::Sunday);//首列是星期几
    //周六周末颜色设置
    QTextCharFormat f;// =ui->mCalendarWidget->weekdayTextFormat(Qt::Monday);//获取周一字体格式
    f.setForeground(QBrush(QColor("#ffffff")));//替换字体颜色
    ui->mCalendarWidget->setWeekdayTextFormat(Qt::Sunday,f);//设置周六日为新的字体格式
    ui->mCalendarWidget->setWeekdayTextFormat(Qt::Saturday,f);//六
    ui->mCalendarWidget->setWeekdayTextFormat(Qt::Monday,f);
    ui->mCalendarWidget->setWeekdayTextFormat(Qt::Tuesday,f);
    ui->mCalendarWidget->setWeekdayTextFormat(Qt::Wednesday,f);
    ui->mCalendarWidget->setWeekdayTextFormat(Qt::Thursday,f);
    ui->mCalendarWidget->setWeekdayTextFormat(Qt::Friday,f);
    ui->mCalendarWidget->setNavigationBarVisible(false);//隐藏导航栏
qss设置:   
QCalendarView#qt_calendar_calendarview {
  alternate-background-color:#000000;   
}
QAbstractItemView {
selection-color: #ffffff;
selection-background-color: rgb(255, 174, 0);
font: 20px;
}
二、获取天气Api

1、获取天气数据

void Weather::queryWeather()
{
    char quest_array[256]= "http://t.weather.sojson.com/api/weather/city/"; 
    QNetworkRequest quest;
    sprintf(quest_array,"%s%s",quest_array,cityName.toLatin1().data());
    quest.setUrl(QUrl(quest_array));
    qDebug()<<"quest_array:"<<quest_array;
    quest.setHeader(QNetworkRequest::UserAgentHeader,"RT-Thread ART");
    /*发送get网络请求*/
    manager->get(quest);
}

2、解析json

void Weather::replyFinished(QNetworkReply *reply)
{
    this->isGetData=false;
    allinfo = reply->readAll();

    QJsonParseError err;
    QJsonDocument json_recv = QJsonDocument::fromJson(allinfo.toUtf8(),&err);//解析json对象
    if(!json_recv.isNull())
    {
        QJsonObject object = json_recv.object();
        if(object.contains("cityInfo"))
        {
            QJsonValue dateValue = object.value("cityInfo");
            QJsonObject object_data = dateValue.toObject();
            cityName = object_data.value("city").toVariant().toString();
        }
        if(object.contains("data"))
        {
            QJsonValue dateValue = object.value("data");
            if(dateValue.isObject())
            {
                mWeatherInfo.shidu = dateValue.toObject().value("shidu").toString();
                mWeatherInfo.wendu = dateValue.toObject().value("wendu").toString();
                mWeatherInfo.quality = dateValue.toObject().value("quality").toString();

                QJsonValue value = dateValue.toObject().value("forecast");

                if(value.isArray())
                {
                    qDebug()<<"size:"<<value.toArray().size();
                    mWeatherInfo.weatherInfoDetailList.clear();
                    for(int i = 0; i < value.toArray().size(); i++)
                    {
                        QJsonObject object = value.toArray().at(i).toObject();
                        struct _WeatherInfoDetail tmpWeatherInfoDetail;
                        tmpWeatherInfoDetail.type = object.value("type").toString();
                        QString high = object.value("high").toString();
                        QString low = object.value("low").toString();
                        tmpWeatherInfoDetail.high = high.mid(low.length()-3,4);
                        tmpWeatherInfoDetail.low = low.mid(low.length()-3,4);
                        tmpWeatherInfoDetail.notice = object.value("notice").toString();
                        tmpWeatherInfoDetail.week = object.value("week").toString();
                        tmpWeatherInfoDetail.fx = object.value("fx").toString();
                        tmpWeatherInfoDetail.fl = object.value("fl").toString();
                        mWeatherInfo.weatherInfoDetailList.append(tmpWeatherInfoDetail);
                    }
                    this->isGetData=true;
                }
            }
        }

    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/722097.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Tars高并发IM系统的设计与实现--进阶篇2

基于Tars高并发IM系统的设计与实现–进阶篇2 消息时序 分为时间和序号 时间 分布式系统中&#xff0c;消息的时间一般都取服务端本地时间戳&#xff0c;一般IM系统服务主机不止一台&#xff0c;每台机器上时间可能会有差异&#xff0c;系统处理也会有延时&#xff0c;时间也…

neo4j删除Property Keys值方法

首先&#xff0c;停止neo4j服务 然后删除安装目录下面databases下面所有文件 重新运行neo4j&#xff0c;发现Property Keys值已经完全清干净了

Docker如何安装Nacos

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

邮件收发原理及部署postfix邮件系统

目录 一、邮件收发原理 1、原理图及名词解释 2、MTA功能介绍 3、POP和IMAP获取邮件介绍 二、部署postfix邮件系统 1、环境准备 2、DNS服务器部署 3、部署Postfix 4、部署Dovecot 三、使用Foxmail测试 1、修改DNS服务器 2、Foxmail登录测试账户 3、发送测试邮件 …

热力图问题

1.python画图怎么使用特殊符号 python画图怎么使用特殊符号&#xff1f;_python中怎么在绘图中加a b c d_sinysama的博客-CSDN博客python画图怎么使用特殊符号_python中怎么在绘图中加a b c dhttps://blog.csdn.net/QAQIknow/article/details/124390075?ops_request_misc%257…

OPPO手机便签怎么设置字体颜色?便签调整字体颜色方法

OPPO是一个非常受年轻人青睐的手机品牌&#xff0c;它的手机不仅外观设计时尚轻薄&#xff0c;而且拍照清晰、系统流畅&#xff0c;并且拥有高中低不同档次的价位可供消费者选择。虽然OPPO手机的使用体验非常不错&#xff0c;但是有一部分用户也遇到了一些问题&#xff0c;例如…

B. Cake Assembly Line - 思维

分析&#xff1a; 推公式&#xff0c;需要每一块蛋糕的范围完全覆盖巧克力范围&#xff0c;假设蛋糕一共移动了距离d&#xff0c;那么则 对于每一个i都有a[i]-wd<b[i]-h<b[i]h<a[i]wd&#xff0c;解得b[i]h-a[i]-w<b[i]-h-a[i]w。只需要判断不等式是否成立就可以求…

平台使用篇 | RflySim飞控底层实验平台配置介绍

本课程提供的实验平台总体可以分成两个部分&#xff1a;硬件平台和软件平台。本讲简要介绍各个部分的基本组成及实验开发流程。 平台使用篇-RflySim飞控底层实验平台配置介绍 01 电脑配置 1.1推荐配置 •系统&#xff1a;Windows 10 x64系统&#xff08;版本大于等于1809&…

IIC通信原理(软件实现)-GD32

IIC通信原理-GD32 硬件连接 数据变换规则 起始信号和结束信号 应答信号 数据帧格式 #include "my_i2c_soft.h" #include "systick.h"void my_i2c_w_SDA(uint8_t bit_value) {gpio_bit_write(I2C_SOFT_PORT, I2C_SOFT_SDA_PIN, (bit_status)bit_val…

【软件下载】音频ASIO驱动下载

一&#xff0c;简介 在高速USB Audio使用中&#xff0c;需要再windows电脑上安装ASIO驱动&#xff0c;用来进行高速音频流的传输&#xff0c;本文主要介绍如何下载安装ASIO驱动。供参考。 二&#xff0c;安装步骤 2.1 软件下载 下载地址&#xff1a;http://www.asio4all.co…

【Python爬虫与数据分析】UDP/TCP通信协议

目录 一、网络编程基础 二、UDP协议 三、TCP协议 一、网络编程基础 数据编码与解码 str -> bytes&#xff1a;encode编码&#xff0c;发送信息的时候用encode编码bytes -> str&#xff1a;decode解码&#xff0c;打印接收的信息用decode解码 test 你好世界en_code…

C语言switch语句与循环结构

1、循环输入5个元素&#xff0c;输出最大值 #include <stdio.h> #include <string.h> int main(int argc, const char *argv[]) {int num,max;for(int i1;i<5;i){printf("请输入第%d个数&#xff1a;",i);scanf("%d",&num);if(i1)maxn…

CSS 两行文字两端对齐与字符间距的处理

前言 &#x1f44f;CSS 文字对齐与字符间距的处理&#xff0c;在这里&#xff0c;你可以了解到文字渐变&#xff0c;letter-spacing&#xff0c;text-align&#xff0c;text-align-last&#xff0c;filter等&#xff0c;速速来Get吧~ &#x1f947;文末分享源代码。记得点赞关…

LabVIEW脉冲检测实现

文章目录 前言一、脉冲检测的原理二、代码实现1、前面板①、输入波形相关参数②、脉冲检测结果 2、程序框图 三、代码自取结论 前言 本节通过 labview 软件实现先导脉冲检测的功能&#xff0c;从而获取先导脉冲的频率、先导脉冲与线性调频信号的延时的相关信息。 一、脉冲检测…

多实例部署和Nginx+Tomcat负载均衡、动静分离

目录 一、Tomcat多实例部署 1.安装好 jdk 2.安装 tomcat 3.配置 tomcat环境变量 4.修改 tomcat2 中的 server.xml文件&#xff0c;要求各 tomcat 实例配置不能有重复的端口号 5.修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件&#xff0c;添加 tomcat 环境变量 6.启…

Vue和React的区别?

目录 共同点 1. 数据驱动视图 2. 组件化 3. Virtual DOM 不同点 1. 核心思想不同 2. 组件写法差异 3. diff算法不同 4. 响应式原理不同 5. 其他不同点 首先找到 Vue 和 React 的共性&#xff0c;它们被用于解决什么问题&#xff0c; 然后再挖掘各自独特的个性、设计原…

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(6月 30 日论文合集)

文章目录 一、检测相关(8篇)1.1 Detect Any Deepfakes: Segment Anything Meets Face Forgery Detection and Localization1.2 Sustainable Palm Tree Farming: Leveraging IoT and Multi-Modal Data for Early Detection and Mapping of Red Palm Weevil1.3 Evaluation of Env…

【DP+博弈】ABC195 E

E - Lucky 7 Battle (atcoder.jp) 题意&#xff1a; 思路&#xff1a; Code&#xff1a; #include <bits/stdc.h>//#define int long longusing namespace std;const int mxn2e510; const int mxe1e610; const int mod1e97; const int Inf0x3f3f3f3f;string s,x;int N;…

【设计模式】第十九章:访问者模式详解及应用案例

系列文章 【设计模式】七大设计原则 【设计模式】第一章&#xff1a;单例模式 【设计模式】第二章&#xff1a;工厂模式 【设计模式】第三章&#xff1a;建造者模式 【设计模式】第四章&#xff1a;原型模式 【设计模式】第五章&#xff1a;适配器模式 【设计模式】第六章&…

VI-SLAM系统对比

任何类型的相机对运动物体&#xff0c;视线遮挡&#xff0c;光照剧烈变化等恶劣情况下都不够鲁棒&#xff0c;而惯性测量单元&#xff08;IMU&#xff09;对环境基本没有要求&#xff0c;并且IMU可以提供高频的位姿估计&#xff0c;视觉一般只能提供低频的位姿。依据视觉与IMU的…