QT Quick QML项目音乐播放器17----自定义Notification通知、请求错误提示、Loading加载中提示
简介:
基于QT5.12版本的Quick QML项目----恋羽音乐播放器(爆肝中......)
上一讲链接:https://blog.csdn.net/2301_80668528/article/details/154353254
下一讲链接:后续更新...
上一讲效果:
(1)小窗效果
小窗播放效果
(2)系统托盘效果
系统托盘效果①
ps:如有错误,欢迎指出 * \/ * !
一、自定义Notification通知
notification是在此处用来展示请求错误提示的
1.新建.qml文件
命名为MusicNotification:

2.包含所需模块
import QtQuick 2.12
3.编写页面内容
(1)页面
import QtQuick 2.12Item
{property Item parentWindow: parentid: selfvisible: falsewidth: 300height: 40anchors{top: parentWindow.toptopMargin: 50horizontalCenter: parentWindow.horizontalCenter //居中}Rectangle{id: rectcolor: "#03a9f4"radius: 5 //圆角anchors.fill: parent/* 文本内容 */Text{id: contenttext: "Notification"color: "#eeffffff"font{family: window.m_FONT_FAMILYpointSize: 10}width: 250lineHeight: 25 //25倍行距lineHeightMode: Text.FixedHeightwrapMode: Text.WordWrap //换行方式anchors{left: parent.leftleftMargin: 10 //左边距verticalCenter: parent.verticalCenter //竖直方向上居中}}/* 关闭按键 */MusicIconButton{iconSource: "qrc:/images/closeBlack.png"iconWidth: 16iconHeight: 16toolTip: "关闭"anchors{right: parent.rightrightMargin: 10verticalCenter: parent.verticalCenter}onClicked: close() //点击关闭按键,则关闭此条Notification}}
}
(2)打开、关闭Notification的函数接口
/* 打开Notification接口 */function open(text = "Notification..."){content.text = textvisible = true}/* 关闭Notification接口 */function close(){visible = false}
3.调用此文件
在main.qml中进行调用:

Ctrl+R运行:

4.添加美术与动画效果
(1)添加阴影
①导入模块:
import QtGraphicalEffects 1.0
②添加阴影DropShadow:
注意:此处DropShadow{}必须放在Rectangle{}前面,放在后面会将Rectangle{}盖住!
/* 阴影 */DropShadow{anchors.fill: rectradius: 8.0horizontalOffset: 1 //设置目标原点与弹出项对齐点之间的水平距离verticalOffset: 1 //设置目标原点与弹出项对齐点之间的水平距离samples: 16 //采样率color: "#90000000"source: rect}
Ctrl+R运行:

(2)添加触发Notification的动画
①在main.qml中添加延时:

②回到自定义的Notification组件中,添加缩放动画:
设置scale属性----随visible值的改变而改变:

添加Behavior动画:
/* 弹出动画:缩放效果 */Behavior on scale{NumberAnimation{easing.type: Easing.InOutQuad //设置动画的缓动曲线类型----加速,然后减速,以使动画过渡更为自然duration: 200}}
Ctrl+R运行:
Notification弹出动画
5.添加别的函数接口
(1)Notification--“打开成功”接口
/* Notification:“打开成功” */function openSuccess(text = "Notification..."){rect.color = "#4caf50"open(text)}
(2)Notification--“打开失败”接口
/* Notification:“打开失败” */function openError(text = "Notification..."){rect.color = "#ff5252" //红色open(text)}
(3)Notification--“打开警告”接口
/* Notification:“打开警告” */function openWarning(text = "Notification..."){rect.color = "#f57c00" //橙色open(text)}
(4)Notification--“打开信息”接口
/* Notification:“打开信息” */function openInfo(text = "Notification..."){rect.color = "#03a9f4" //蓝色open(text)}
(5)修改打开、关闭Notification接口逻辑
/* 打开Notification接口 */function open(text = "Notification..."){close()content.text = textvisible = true}
/* 关闭Notification接口 */function close(){visible = falserect.color = "#03a9f4" //蓝色}
6.设置Notification定时关闭
(1)导入所需模块
import QtQml 2.12
(2)添加定时组件
/* Notification定时关闭 */Timer{id: timerinterval: 3000 //3s自动关闭onTriggered: close()}
(3)设置在open()接口被调用时定时开始

(4)设置在close()接口被调用时定时关闭

Ctrl+R运行:
(Notification自动关闭效果,审核中......)
二、Notification应用--请求错误提示
1.关闭Timer

2.获取歌曲链接错误提示
(1)在LayoutBottomView中的调用Notification提示----处理链接请求错误:
接口①:playWebMusic()

将下面第一张图中的高亮行剪贴至第二、三张图中高亮位置,是音乐播放play()后才保存播放记录:



(2)添加异常捕获try{}catch(err){}


3.获取音乐封面错误提示与异常捕获

4.获取音乐歌词错误提示与异常捕获

5.获取轮播图错误提示与异常捕获
进入DetailRecommendPageView.qml文件中:

6.获取热门推荐音乐错误提示与异常捕获

7.获取最新歌曲速递错误提示与异常捕获

8.获取搜索音乐错误提示与异常捕获
进入DetailSearchPageView.qml文件:

Ctrl+R运行:
Notification错误提示效果
三、loading加载中提示
1.新建QML文件
复制粘贴一份Notification的QML文件,重命名为:

2.设置基本属性

3.删除Button组件与Timer组件,添加加载中图标Icon

4.修改Text{}组件属性

5.修改函数接口
/* 打开Loading接口 */function open(){visible = true}/* 关闭Loading接口 */function close(){visible = false}
6.在main.qml中注册

7.调用此自定义loading组件
(1)搜索音乐时调用


(2)在推荐内容时调用



(3)在点击底部功能栏按键时启用/关闭Loading:
进入LayoutBottomView.qml文件:



8.添加loading图标旋转动画
删除原有的弹出动画,在Image{}组件中添加旋转动画:
/* Icon图标 */Image{id: imagesource: "qrc:/images/loading.png"width: 50height: 50anchors.centerIn: parent/* 动画:图标旋转效果 */NumberAnimation{property: "rotation"from: 0to: 360target: imageloops: Animation.Infinite //循环播放running: self.visibleduration: 1000}
Ctrl+R运行:
Loading效果
至此,QT Quick QML项目音乐播放器17----自定义Notification通知、请求错误提示、Loading加载中提示正式完结,感谢您的阅读! * \/ *
