当前位置: 首页 > news >正文

Qt天气预报系统更新UI界面

Qt天气预报系统更新UI界面

  • 1、创建各个小部分列表
  • 2、定义一个更新UI函数
    • 2.1 实现更新UI界面函数

1、创建各个小部分列表

QList<QLabel *> weekList;                   //星期
QList<QLabel *> dateList;                   //日期QList<QLabel *> weatherList;                        //天气
QList<QLabel *> weatherIconList;                   //天气图标QList<QLabel *> airPollutionList;                   //空气污染指数QList<QLabel *> windPowerList;                      //风力
QList<QLabel *> windTypeList;                       //风的类型

2、定义一个更新UI函数

void updateUI();                                        //更新UI界面

2.1 实现更新UI界面函数

//更新UI界面
void MainWindow::updateUI()
{// 当前日期处理QDate currentDate = QDate::fromString(today.date, "yyyyMMdd");if (!currentDate.isValid()) {qWarning() << "Invalid current date:" << today.date;return;}ui->labelCurrentDate->setText(currentDate.toString("yyyy/MM/dd") + " " + day[1].week);ui->labelCity->setText(today.city);
//    ui->labelCurrentDate->setText(QDateTime::fromString(today.date,"yyyyMMdd").toString("yyyy/MM/dd")
//                                  + " " + day[1].week);  //当前日期//    ui->labelCity->setText(today.city);         //城市//今天ui->labelWeatherTypeP->setPixmap(weatherIconMap[today.weatherType]);   //天气图标ui->labelTemperature->setText(QString::number(today.temperature)+"℃");     //温度qDebug() <<today.temperature;ui->labelWeatherType->setText(today.weatherType);           //天气类型ui->labelTemperatureRange->setText(QString::number(today.lowTem) + "~" + QString::number(today.highTem) + "℃"); //温度范围ui->labelTips->setText(today.ganMao);               //天气小提示ui->labelWindTy->setText(today.windType);           //风的类型ui->labelWindPr->setText(today.windPower);          //风力ui->labelPM25Pr->setText(QString::number(today.PM25));                 //PM2.5ui->labelHumidityPr->setText(today.Humidity);                          //湿度ui->labelAirqualityPr->setText(today.airQuality);                        //空气质量//更新未来几天
//    const int maxDay = 7;const int maxDay = qMin(7, qMin(qMin(weekList.size(),  dateList.size()),qMin(qMin(weatherList.size(),  weatherIconList.size()),qMin(qMin(airPollutionList.size(),  windDirectionList.size()),windPowerList.size()))));for(int i = 0; i < maxDay; i++){qDebug() << "Updating index:"<< i << ", date:" << day[i].date;// 边界检查if (i >= 7 || i >= weekList.size() || i >= dateList.size() ||i >= weatherList.size() || i >= weatherIconList.size() ||i >= airPollutionList.size() || i >= windDirectionList.size() ||i >= windPowerList.size()) {qWarning() << "Index out of range:" << i;continue;}// 设置昨天、今天、明天等标签if(i == 0) {weekList[i]->setText("昨天"); // 直接设置第一天为昨天} else if(i == 1) {weekList[i]->setText("今天");} else if(i == 2) {weekList[i]->setText("明天");} else {weekList[i]->setText(day[i].week); // 后续显示实际星期}//日期 2025-1-28
//        QStringList ymdList = day[i].date.split("-");               //-作为分隔符
//        qDebug() << day[i].date;
//        dateList[i]->setText(ymdList[1] + "/" + ymdList[2]);        //取月份和日期 1/28// 设置日期QStringList ymdList = day[i].date.split("-");if (ymdList.size() >= 3) {dateList[i]->setText(ymdList[1] + "/" + ymdList[2]);} else {dateList[i]->setText("N/A");}//天气类型weatherList[i]->setText(day[i].weatherType);        //天气weatherIconList[i]->setPixmap(weatherIconMap[day[i].weatherType]);      //天气图标//空气质量if(day[i].airQuality >= 0 && day[i].airQuality<=50){airPollutionList[i]->setText("优");airPollutionList[i]->setStyleSheet("background-color: rgb(70, 211, 103);");}else if(day[i].airQuality > 50 && day[i].airQuality <= 100){airPollutionList[i]->setText("良");airPollutionList[i]->setStyleSheet("background-color: rgb(255, 199, 69);");}else if(day[i].airQuality > 100 && day[i].airQuality <= 150){airPollutionList[i]->setText("轻度");airPollutionList[i]->setStyleSheet("background-color: rgb(255, 199, 69);");}else if(day[i].airQuality > 150 && day[i].airQuality <= 200){airPollutionList[i]->setText("中度");airPollutionList[i]->setStyleSheet("background-color: rgb(255, 85, 0);");}else if(day[i].airQuality > 200 && day[i].airQuality <= 250){airPollutionList[i]->setText("重度");airPollutionList[i]->setStyleSheet("background-color: rgb(255, 0, 0);");}else{airPollutionList[i]->setText("严重");airPollutionList[i]->setStyleSheet("background-color: rgb(203, 0, 0);");}//风windDirectionList[i]->setText(day[i].windType);              //风向windPowerList[i]->setText(day[i].windPower);            //风力}//不添加温度就会显示为0℃ui->higntTemLabel->update();ui->lowTemLabel->update();
}

更新UI界面完成!

相关文章:

  • 电路研究9.3.3——合宙Air780EP中的AT开发指南:HTTP(S)-HTTP GET 示例
  • 逆向常见题目—迷宫类题目
  • 【AI大模型学习路线】第一阶段之大模型开发基础——第四章(提示工程技术-1)In-context learning。
  • android-ndk开发(5): 编译运行 hello-world
  • 机器人强化学习入门学习笔记
  • EPSG:3857 和 EPSG:4326 的区别
  • 雷电模拟器-超好用的Windows安卓模拟器
  • 百度golang开发一面
  • Red Hat6.4环境下搭建DHCP服务器
  • llama_factory0.9.3微调Qwen3
  • DGI数据治理框架的最佳实践
  • 《电子技术基础(数字部分)》第 5 章 锁存器和触发器
  • 分析rand()和srand()函数的功能
  • 开元类双端互动组件部署实战全流程教程(第4部分:后台配置系统与参数动态控制)
  • 普联的AC100+AP+易展路由组网方案的一些问题
  • 2025年第十六届蓝桥杯省赛JavaB组真题
  • 功率放大器设计
  • Javascript大致框架
  • 前端面试每日三题 - Day 25
  • 【RK3588嵌入式图形编程】-Cairo-Cairo图形库支持后端
  • 柳向春:关于美国国会图书馆所藏《全芳备祖》的一些故事
  • 客流持续高位运行,长三角铁路计划增开153列旅客列车
  • 人民日报头版头条:青春为中国式现代化挺膺担当
  • 向左繁华都市,向右和美乡村,嘉兴如何打造城乡融合发展样本
  • 今年五一假期出游人群规模预计比去年提升8%,哪里最热门?
  • 人民日报评论员:因势利导对经济布局进行调整优化