# :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获取当前位置城市,调⽤和⻛天⽓城市搜索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->setSca
没有合适的资源?快使用搜索试试~ 我知道了~
基于Qt框架的天气预报应,可查询各地多日天气;增加了简易音乐播放器模块.zip
共565个文件
svg:477个
dll:32个
qm:22个
需积分: 0 0 下载量 2 浏览量
2023-12-31
00:34:25
上传
评论
收藏 120.88MB ZIP 举报
温馨提示
QT,C++使用技巧,详细介绍了一些Qt框架的各种功能和模块,以及如何使用Qt进行GUI开发、网络编程和跨平台应用开发等。实战应用参考资料,源码参考。 适用于初学者和有经验的开发者,能够帮助你快速上手Qt并掌握其高级特性。
资源推荐
资源详情
资源评论
收起资源包目录
基于Qt框架的天气预报应,可查询各地多日天气;增加了简易音乐播放器模块.zip (565个子文件)
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
重庆.gif 5.32MB
guangzhou.gif 3.45MB
move3.gif 269KB
weather.h 4KB
weatherwidget.h 3KB
timerthread.h 1KB
mymusicplayer.h 888B
mythread.h 614B
logo.ico 4KB
README.md 56KB
music1.mp3 3.51MB
image-20230912163000971.png 186KB
image-20230912210608372.png 140KB
image-20230912163021551.png 29KB
image-20230912163038987.png 23KB
image-20230912164915001.png 18KB
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
qt_ko.qm 141KB
qt_ja.qm 141KB
qt_he.qm 135KB
qt_zh_TW.qm 135KB
qt_sk.qm 132KB
qt_en.qm 23B
Image.qrc 18KB
Music.qrc 88B
1204.svg 5KB
2213.svg 4KB
2078.svg 3KB
2381.svg 3KB
410.svg 3KB
2324.svg 3KB
2361.svg 3KB
2391.svg 3KB
1205.svg 3KB
1601.svg 3KB
2316.svg 3KB
2108.svg 3KB
1606.svg 3KB
409.svg 3KB
1207.svg 3KB
2327.svg 3KB
共 565 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
白话Learning
- 粉丝: 3081
- 资源: 2465
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 3122080306 邹子轩 实验报告二.docx
- 基于STM32 NUCLEO板设计彩色LED照明灯(纯cubeMX开发)(大赛作品,文档完整,可直接运行)
- 发那科工业机器人保养大全
- Sphere.h
- REMD固有时间尺度分解信号分量可视化(Matlab完整源码和数据)
- 嵌入式系统双单片机STC89C52+STC15W104多功能学习板电路图可扩展 适用于单片机初学者和教学
- 基于STM32蓝牙控制小车系统设计(硬件+源代码+论文)大赛作品
- XILINXFPGA源码基于Spartan3火龙刀系列FPGA开发板VGA测试例程
- Java聊天室的设计与实现【尚学堂·百战程序员】
- python中matplotlib教程
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功