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