# :white_check_mark:基于Qt框架的天气预报应用开发
**---->>:heavy_check_mark:添加简易音乐播放器模块**:wave: :+1::point_up_2::star:
## :green_book:1.项目简介
:sunflower:WeatherForecast-MusicPlayer是基于Qt开发,并且未使用除了 C++标准库 和 Qt 之外的第三方库,保证了库的可移植性以及库的纯粹性。
:airplane:通过调⽤⽹络IP地址查询获取当前位置城市,调⽤和⻛天⽓城市搜索API获取该城市的ID,根据ID调⽤和⻛实时天⽓API获取该城市天⽓,使⽤QMap容器存储多⽇天⽓数据。程序中可搜索城市名或者点击定位按钮查询城市近期天⽓,项⽬中使⽤了json数据解析技术,通过定时器获取当前时间。
:musical_note: 音乐模块中通过QHash数据结构存储音乐列表。实现播放暂停、上下曲切换、音量控制、进度条控制、添加音乐、存储音乐列表和通过子线程Thread实时更新当前音乐播放进度的时间显示。
**用到的Qt库有**:
- core
- gui
- network
- svg
- multimedia
:grinning:理论上可以部署到任何Qt支持的平台上。:ear_of_rice:
\```
🕙 分享是一种美德,如果帮到你了,还请右上随手点个 🌟 Star,谢谢:wink:
\```
#### IP地址归属地数据查询API
http://whois.pconline.com.cn/ipJson.jsp?ip
#### 和风天气城市搜索API
https://geoapi.qweather.com/v2/city/lookup?location=beij&key=YOUR_KEY
#### 和风天气实时天气API
https://devapi.qweather.com/v7/weather/now?location=101010100&key=YOUR_KEY
**和风天气每日天气API**
3日:https://devapi.qweather.com/v7/weather/3d?location=101010100&key=YOUR_KEY
7日:https://devapi.qweather.com/v7/weather/7d?location=101010100&key=YOUR_KEY
## :shamrock:2.项目演示
### :beginner:2.1启动界面
启动程序即刷新、当天气数据获取成功时关闭
<img src="assets/move3.gif" width="320px" height="200">
### :tulip: 2.2今日天气界面
启动时通过ip获取当前城市查询天气
添加了查询、定位按钮、点击跳转网页、温馨提示、天气图标svg格式
<img src="assets/weather1.gif" width="420px">
### :evergreen_tree:2.3多日天气界面
展示重庆天气
<img src="assets/%E9%87%8D%E5%BA%86.gif" width="420px">
### :musical_note:2.4简易音乐播放器
1. 在无添加时随意点击不会出现程序崩溃
2. 可添加\*.mp3、\*.wav 、\*.wma三种音频格式
> 有能力的可以继续修改添加QVideoWidget模块播放视频
3. 进度条时间显示的计算我将其放在子线程中实现
<img src="assets/musicPlayer.gif" width="420px">
## :books:3.文件夹介绍
1. Music:可播放\*.mp3 \*.wav 和\*.wma三种格式的音乐
2. MyWeather:项目代码
①Image:资源文件
②Icons:天气图标,根据和风天气API调用返回json数据中图标代码来调用
3. Output:可执行程序.exe文件,程序已经打包好,可直接下载安装使用
4. weatherAPP_Release:通过工具windeployqt MyWeather.exe生成的可运行程序
---
# :bookmark_tabs:开发流程文档
需求:编写一款桌面端天气预报应用和音乐播放器。
> 开发环境:
>
> 平台:QT 5.14.2
>
> 构建套件:Desktop_Qt_5_14_2_MinGW_32_bit
>
> 系统:Windows10,理论上可以部署到任何Qt支持的平台上。
>
> 推荐使用Linux系统或者Unix系统
目录结构:
<img src="assets/image-20230912164915001.png" width="180px" height="310px">
> 学习参考过程中应对照工程文件来进行
开发过程
## :house_with_garden:1.界面设计
<img src="assets/image-20230912163000971.png" width="500px"><img src="assets/image-20230912163021551.png" width="500px"><img src="assets/image-20230912163038987.png" width="500px">
### 1.1 设计样式
:fallen_leaf:添加了一些动画效果和透明效果、让界面感觉更"高大尚":joy:
```c++
this->setWindowTitle("xtc天气");
this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowMinimizeButtonHint); //窗口为无边框,同时保留系统菜单和最小化按钮
ui->lineEditCityName->setStyleSheet("QLineEdit{background-color: rgba(255,255,225,0.3);border:none;color:#FFFAF0; border-radius:16px;padding:4px 4px}"); //lineEdit圆角样式
ui->pushButtonQuery->setStyleSheet("QPushButton::hover{font:24px;}" "QPushButton{background:transparent;color:#FFFAF0}");
ui->pushButtonLocation->setStyleSheet("QPushButton::hover{font:19px;}" "QPushButton{background:rgba(255,255,225,0.2);color:#FFFAF0;border-radius:16px;padding:5px 5px}");
ui->btnPause->setIcon(QIcon(":/Image/pause.png"));
ui->btnAddMusic->setStyleSheet("QPushButton::hover{font:19px;}" "QPushButton{background:rgba(255,255,225,0.2);color:#FFDEAD;border-radius:16px;padding:5px 5px}");
ui->tabWidget->setCurrentWidget(ui->tab);
ui->tabWidget->setTabText(0, "今日天气");
ui->tabWidget->setTabIcon(0, QIcon(":/Image/logo.ico"));
ui->tabWidget->setTabText(1, "未来天气");
ui->tabWidget->setTabIcon(1, QIcon(":/Image/weather.png"));
ui->tabWidget->setTabText(2, "音乐播放");
ui->tabWidget->setTabIcon(2, QIcon(":/Image/musicicon.png"));
ui->tabWidget->setStyleSheet("QTabWidget:pane {border-top:0px solid #e8f3f9;background:rgba(255,255,255,0.2); border-radius:16px;padding:4px 4px}"
"QTabBar::tab {background:#2F4F4F;color:#FFA500;font:19px;font-weight:bold;}");
ui->pushButtonMini->setIcon(QIcon(":/Image/Min.png")); //最小化按钮
ui->pushButtonMini->setStyleSheet("QPushButton{border:none;color:rgb(122, 197, 205);}" "QPushButton:hover{background-color: #1E90FF;border:none;color:rgb(255, 255, 255);}");
ui->pushButtonDestroy->setIcon(QIcon(":/Image/Close.png")); //关闭按钮
ui->pushButtonDestroy->setStyleSheet("QPushButton{border:none;color:rgb(122, 197, 205);}" "QPushButton:hover{background-color: #FF0000;border:none;color:rgb(255, 255, 255);}");
ui->tableWidget->setColumnWidth(0, 160); //添加7列
ui->tableWidget->setColumnWidth(1, 120);
ui->tableWidget->setColumnWidth(2, 160);
ui->tableWidget->setColumnWidth(3, 180);
ui->tableWidget->setColumnWidth(4, 180);
ui->tableWidget->setColumnWidth(5, 160);
ui->tableWidget->setColumnWidth(6, 100);
ui->tableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); //水平滚动策略 关闭
ui->tableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);//垂直滚动策略
ui->tableWidget->setShowGrid(false); //无格子线
//tableWidget表头样式
ui->tableWidget->horizontalHeader()->setStyleSheet("QHeaderView::section{background:transparent;}");
ui->tableWidget->verticalHeader()->setVisible(false); //隐藏列表头
// ui->tableWidget->horizontalHeader()->setVisible(false); //隐藏行表头
ui->tableWidget->verticalHeader()->setDefaultSectionSize(75); //设置行高 (除表头外) setDefaultSectionSize设置默认分段大小
ui->tableWidget->horizontalHeader()->setFixedHeight(90); //表头行高
ui->vSliderVolume->setVisible(false);
ui->lwMusicList->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//关闭水平滚动条
movieToLoad(); //加载gif
```
```c++
/**
* @brief WeatherWidget::movieToLoad
* 显示一些gif动画效果
*/
void WeatherWidget::movieToLoad() {
movie = new QMovie(":/Image/movie.gif"); //设置GIF格式背景图
movie->setScaledSize(QSize(1200, 750)); //设置GIF动画的尺寸与QLabel的尺寸相同
ui->label_background->setMovie(movie);
movie->start();
ui->label_cover->raise();// 将 label 显示在最上面 启动图
movie2 = new QMovie(":/Image/move3.gif");
movie2->setScaledSize(QSize(1200, 750)); // 设置GIF动画的尺寸与QLabel的尺寸相同
ui->label_cover->setMovie(movie2);
movie2->start();
movie3 = new QMovie(":/Image/haimianbaby.gif"); //界面美化用
movie3->setScaledSize(QS
没有合适的资源?快使用搜索试试~ 我知道了~
基于Qt开发的一款桌面端天气预报应用和音乐播放器源码
共589个文件
svg:477个
dll:32个
qm:22个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 177 浏览量
2023-09-28
10:00:18
上传
评论 1
收藏 146.62MB ZIP 举报
温馨提示
通过调⽤⽹络IP地址查询获取当前位置城市,调⽤和⻛天⽓城市搜索API获取该城市的ID,根据ID调⽤和⻛实时天⽓API获取该城市天⽓,使⽤QMap容器存储多⽇天⽓数据。程序中可搜索城市名或者点击定位按钮查询城市近期天⽓,项⽬中使⽤了json数据解析技术,通过定时器获取当前时间。 音乐模块中通过QHash数据结构存储音乐列表。实现播放暂停、上下曲切换、音量控制、进度条控制、添加音乐、存储音乐列表和通过子线程Thread实时更新当前音乐播放进度的时间显示 开发环境: 平台:QT 5.14.2 构建套件:Desktop_Qt_5_14_2_MinGW_32_bit 系统:Windows10,理论上可以部署到任何Qt支持的平台上。 推荐使用Linux系统或者Unix系统
资源推荐
资源详情
资源评论
收起资源包目录
基于Qt开发的一款桌面端天气预报应用和音乐播放器源码 (589个子文件)
weatherwidget.cpp 20KB
weather.cpp 10KB
mymusicplayer.cpp 2KB
mythread.cpp 1KB
timerthread.cpp 823B
main.cpp 178B
opengl32sw.dll 15.25MB
Qt5Gui.dll 9.4MB
Qt5Widgets.dll 8.71MB
Qt5Core.dll 8.07MB
libGLESv2.dll 7.43MB
D3Dcompiler_47.dll 3.31MB
qwindows.dll 2.83MB
Qt5Network.dll 2.57MB
libcrypto-1_1.dll 2.41MB
Qt5Multimedia.dll 1.56MB
libstdc++-6.dll 1.47MB
dsengine.dll 1008KB
Qt5Svg.dll 576KB
qwebp.dll 561KB
qtiff.dll 543KB
libssl-1_1.dll 522KB
qjpeg.dll 472KB
qwindowsvistastyle.dll 328KB
qtaudio_windows.dll 300KB
qtmedia_audioengine.dll 167KB
qgenericbearer.dll 136KB
libgcc_s_dw2-1.dll 111KB
qsvgicon.dll 96KB
qicns.dll 96KB
qico.dll 82KB
qtmultimedia_m3u.dll 76KB
qgif.dll 75KB
qsvg.dll 73KB
qtga.dll 68KB
qwbmp.dll 67KB
libEGL.dll 66KB
libwinpthread-1.dll 46KB
WeatherMusic.exe 20.86MB
MyWeather.exe 3.65MB
weather.gif 36.1MB
musicPlayer.gif 11.99MB
weather1.gif 10.86MB
move9.gif 5.84MB
move7.gif 5.34MB
重庆.gif 5.32MB
guangzhou.gif 3.45MB
move.gif 3.22MB
move4.gif 2.88MB
move8.gif 1.94MB
timg07.gif 1.14MB
movie.gif 1.01MB
move6.gif 680KB
move2.gif 520KB
move3.gif 269KB
move3.gif 269KB
haimianbaby.gif 98KB
paidaxing.gif 68KB
move5.gif 21KB
weather.h 4KB
weatherwidget.h 3KB
timerthread.h 1KB
mymusicplayer.h 888B
mythread.h 614B
logo.ico 4KB
logo.ico 4KB
README.md 56KB
music.mp3 3.51MB
music1.mp3 3.51MB
weather.png 199KB
image-20230912163000971.png 186KB
image-20230912210608372.png 140KB
musicicon.png 50KB
image-20230912163021551.png 29KB
next.png 25KB
last.png 25KB
pause.png 24KB
image-20230912163038987.png 23KB
stop.png 22KB
image-20230912164915001.png 18KB
volume.png 12KB
Close.png 2KB
Min.png 709B
MyWeather.pro 1KB
qt_de.qm 224KB
qt_ru.qm 208KB
qt_ca.qm 194KB
qt_fi.qm 189KB
qt_cs.qm 186KB
qt_gd.qm 185KB
qt_da.qm 183KB
qt_fr.qm 178KB
qt_es.qm 178KB
qt_bg.qm 175KB
qt_it.qm 174KB
qt_hu.qm 173KB
qt_pl.qm 171KB
qt_uk.qm 170KB
qt_ar.qm 167KB
qt_lv.qm 150KB
共 589 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
- 2401_831339972024-03-04资源中能够借鉴的内容很多,值得学习的地方也很多,大家一起进步!
云哲-吉吉2021
- 粉丝: 3215
- 资源: 1130
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功