#include "widget.h"
#include "ui_widget.h"
#include<QJsonParseError>
#include<QJsonDocument>
#include<QJsonObject>
#include<QJsonValue>
#include<QMessageBox>
#include<QDebug>
#include<QJsonArray>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
setWindowFlags(Qt::FramelessWindowHint|windowFlags());
QPalette pal(palette());
pal.setColor(QPalette::Background, QColor(50, 50, 50));
pal.setColor(QPalette::WindowText,QColor(255,255,255));
setAutoFillBackground(true);
setPalette(pal);
ui->widget->setFixedHeight(35);
ui->ICONlabel->setFixedSize(25,25);
ui->ICONlabel->setScaledContents(true);
ui->ICONlabel->setPixmap(QPixmap(":/ICON/tb.png"));
ui->BIAOTIlabel->setMinimumSize(80,25);
ui->BIAOTIlabel->setText(" 天气查询");
ui->BIAOTIlabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
ui->pushButtonmin->setFixedSize(27,25);
ui->pushButtonmax->setFixedSize(27,25);
ui->pushButtonclose->setFixedSize(27,25);
ui->lineedit->setMinimumHeight(20);
ui->pushButton->setMinimumHeight(25);
ui->lineedit->setStyleSheet("background-color:transparent;color:rgb(255,255,255);border-width:1;border-radius:10px;padding:2px 4px;border-style:outset");//border:2px groove blue;
ui->tableWidget->setHorizontalHeaderLabels(QStringList() <<tr("日期")<<tr("温度")<<tr("风力")<<tr("风向")<<tr("天气"));
//ui->tableWidget->horizontalHeader()->setHidden(true);
ui->tableWidget->verticalHeader()->setHidden(true);
ui->tableWidget->setStyleSheet("background-color:transparent;color:rgb(255,255,255)");
ui->tableWidget->horizontalHeader()->setStyleSheet("QHeaderView::section {background-color:transparent;padding-left: 4px;border: 1px solid #6c6c6c}");
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
manage = new QNetworkAccessManager(this);
connect(manage,SIGNAL(finished(QNetworkReply *)),this,SLOT(replyFinished(QNetworkReply*)));
QNetworkRequest network_request;
/*设置发送数据*/
network_request.setUrl(QUrl(QString("http://wthrcdn.etouch.cn/weather_mini?city=%1").arg(ui->lineedit->text())));
network_request.setHeader(QNetworkRequest::UserAgentHeader,"RT-Thread ART");
/*发送get网络请求*/
manage->get(network_request);
}
void Widget::replyFinished(QNetworkReply *reply)
{
/*对数据进行编码*/
QTextCodec *codec=QTextCodec::codecForName("utf8");
QString all=codec->toUnicode(reply->readAll());
init(all);
reply->deleteLater();
}
void Widget::init(QString str)//读取json数据
{
ui->tableWidget->clear();
ui->tableWidget->setColumnCount(5);
ui->tableWidget->setHorizontalHeaderLabels(QStringList() <<tr("日期")<<tr("温度")<<tr("风力")<<tr("风向")<<tr("天气"));
QByteArray byte_array;
QJsonParseError json_error;
QJsonDocument document = QJsonDocument::fromJson(byte_array.append(str),&json_error);
if(json_error.error == QJsonParseError::NoError)
{
QJsonObject obj = document.object();
QJsonValue value = obj.take("desc");//qjsonvalue生成json文档中对象的值的对象
if(value.toString() != "OK")
{
QMessageBox::warning(this,"抱歉","暂无此城市的天气情况",QMessageBox::Ok,QMessageBox::Ok);
return;
}
QJsonValue da = obj.take("data");//获取data数据对象里面的值
data.ganmao = da.toObject().take("ganmao").toString();//da.toobject()表示的是data对象里面的对象,tostring再将它转换成string类型
data.wendu = da.toObject().take("wendu").toString();
data.city = da.toObject().take("city").toString();
//QString使用%1、%2~%99的参数范围显示或储存字符串
/*举个栗子
* QString i = "10";
* QString j = "25";
* Qstring filename = "test.cpp";
* QString string = QString("Processing file %1 of %2:%3")
* .arg(i).arg(j).arg(filename);*/
QJsonValue da1 = da.toObject().take("forecast");
QJsonArray array = da1.toArray();
for(int i =0;i<5;i++)
{
QJsonValue value = array.at(i);
QJsonObject obj = value.toObject();
forecast[i].fengxiang = obj.take("fengxiang").toString();
forecast[i].date = obj.take("date").toString();
forecast[i].fengli = obj.take("fengli").toString();
forecast[i].high = obj.take("high").toString();
forecast[i].low = obj.take("low").toString();
forecast[i].type = obj.take("type").toString();
}
for(int i =0;i<5;i++)
{
ui->tableWidget->setRowCount(i+1);
for(int j=0;j<5;j++)
{
QTableWidgetItem *tab=new QTableWidgetItem;
if(j==0)
{
tab->setText(forecast[i].date);
}
if(j==1)
{
tab->setText(QString::fromLocal8Bit("%1-%2").arg(forecast[i].low.split(" ").at(1)).arg(forecast[i].high.split(" ").at(1)));
}
if(j==2)
{
QString str=forecast[i].fengli.split("[").at(2);
tab->setText(str.split("]").at(0));
}
if(j==3)
{
tab->setText(forecast[i].fengxiang);
}
if(j==4)
{
tab->setText(forecast[i].type);
}
tab->setTextAlignment(Qt::AlignVCenter);
ui->tableWidget->setItem(i,j,tab);
}
}
}
}
void Widget::on_pushButtonmin_clicked()
{
this->showMinimized();
}
void Widget::on_pushButtonmax_clicked()
{
this->isMaximized() ? this->showNormal() : this->showMaximized();
}
void Widget::on_pushButtonclose_clicked()
{
this->close();
}
void Widget::mousePressEvent(QMouseEvent *event) {
if (event->button() == Qt::LeftButton) {
dragPosition = event->globalPos() - frameGeometry().topLeft();
event->accept();
}
}
void Widget::mouseMoveEvent(QMouseEvent *event) {
if (event->buttons() & Qt::LeftButton) {
move(event->globalPos() - dragPosition);
event->accept();
}
}

记忆那伤
- 粉丝: 11
最新资源
- 盘镜开源文件系统管理框架_统一接口适配器集群支持数据安全用户空间管理_简化不同存储系统间文件操作提高开发效率_Java_HDFS_HTTP_TCP_加密算法_Maven_分布式存储.zip
- Typecho-WeiboFileNotMovie阿里新浪微博图片上传插件纯净无视频版_专为Typecho博客系统设计的阿里云存储附件上传工具_去除视频功能仅保留图片上传_支持多种.zip
- control-theory-Bachelor_with-Packet-Dropout_10168_1755686595707.zip
- Python模拟LinuxShell文件系统项目_实现字符串存储的文件系统_支持ls_cd_mkdir_touch_cat_echo_exit命令_退出时自动保存对象_用于学习和模.zip
- RBS库项目_一个基于C17标准开发的跨平台快速开发库_提供网络请求文件系统文件读写流处理等常用功能模块_采用面向对象设计思想将复杂功能抽象为接口实现统一操作_支持Window.zip
- 基于PHP开发的图片公链存储与展示系统_支持多分类文本文件管理图片链接_提供右键复制公链功能_集成随机图片API接口_采用响应式网页设计_支持Unsplash缩略图参数优化_包含完.zip
- Vivado自动生成与管理的项目文件目录结构_该目录下的所有文件均由Vivado工具自动创建和维护包括但不限于综合后的网表文件约束文件仿真脚本实现日志以及比特流生成相关的临.zip
- 基于Vuejs框架开发的本地存储增强型任务管理系统_实现动态任务增删改查与数据持久化存储_支持多维度任务分类与优先级标记的个性化待办事项记录工具_采用localStorage技术.zip
- Foxit Reader(福昕pdf阅读器) v12.1.0(pdf阅读软件)是一款十分专业且界面简洁的PDF阅读器.rar
- 基于双轨记忆机制的智能Agent记忆管理系统_实现短期记忆与长期记忆协同工作的创新架构_支持记忆存储检索关联演化的完整生命周期管理_用于构建具备持续学习能力的AI助手和自主决策系统.zip
- 基于10版本的升级_项目极简说明这是一个针对现有10版本进行全面优化和功能扩展的升级项目旨在提升系统性能增强用户体验并引入新特性包括更高效的数据处理机制更稳定的运行环.zip
- 博客图片存储仓库_博客文章配图_个人博客插图_技术教程截图_项目展示图片_社交媒体分享图_设计素材备份_在线文档插图_演示文稿配图_网站页面元素_用户界面设计资源_移动应用界面截图.zip
- 一个基于Web的轻量级笔记应用_支持Markdown编辑实时保存标签分类搜索功能多设备同步离线使用数据导出主题切换版本历史协作编辑提醒设置附件上传云存储集成.zip
- 基于javaScript开发的实验室预约系统+源码+项目文档(毕业设计&课程设计&项目开发)
- Bob 应用中 Yi 大模型 API 的相关插件
- 四川大学教务系统自动化助手_皮卡丘增强版_集成验证码智能识别与本地化账号安全管理功能_通过ddddocr库实现高精度验证码解析_支持学号密码本地TXT存储与星号掩码显示_提供一键评.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


