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界面完成!