【写在前面】
常常打仗前端的朋友应该常常见到下面的控件:
在前端中一样平常称它为 Notification 或 Message,但本质是一种东西,即:悬浮弹出式的消息提示框。
这种组件一样平常具有以下特点:
1、全局/局部体现:它不依靠于具体的页面元素,可以在整个页面的任意位置体现。
2、主动消失:默认环境下,消息会在一定时间后主动消失,也可以设置为不主动消失。
3、多种范例:支持多种范例的消息,如成功(Success)、警告(Warning)、错误(Error)和 消息(Message)等。
4、可配置:可以自定义消息的体现位置、持续时间、内容等。
然鹅 Qml 中并未提供雷同的组件,因此我便仿照前端实现了出来,并且更加简单易用。
【正文开始】
先来看看 Qml Notification 效果图:
实现起来相称简单,只须要 Column + Repeater 即可:
然后使用 notify() 来添加关照消息:
- function notify(title, message, type = Notification.None, timeout = 3000) {
- listModel.append({
- title: title,
- message: message,
- type: type,
- timeout: timeout
- });
- }
复制代码 其中参数说明:
title:标题,即关照顶端的标题。
message:消息,即关照中间的内容。
type:范例,即该关照的范例。
timeout:超时,即该关照体现的时长,-1 则是无穷。
【怎样使用】
- import QtQuick 2.15
- import QtQuick.Controls 2.15
- import QtQuick.Window 2.15
- Window {
- width: 800
- height: 600
- visible: true
- title: qsTr("Notification Test")
- Notification {
- id: topNotification
- z: 100
- backgroundWidth: 240
- anchors.top: parent.top
- anchors.horizontalCenter: parent.horizontalCenter
- titleFont.pointSize: 11
- messageFont.pointSize: 11
- }
- Column {
- anchors.centerIn: parent
- spacing: 10
- Row {
- spacing: 10
- Button {
- text: qsTr("成功")
- onClicked: {
- topNotification.notify(qsTr("成功"), qsTr("这是一条成功的提示消息"), Notification.Success);
- }
- }
- Button {
- text: qsTr("警告")
- onClicked: {
- topNotification.notify(qsTr("警告"), qsTr("这是一条警告的提示消息"), Notification.Warning);
- }
- }
- Button {
- text: qsTr("消息")
- onClicked: {
- topNotification.notify(qsTr("消息"), qsTr("这是一条消息的提示消息"), Notification.Message);
- }
- }
- Button {
- text: qsTr("错误")
- onClicked: {
- topNotification.notify(qsTr("错误"), qsTr("这是一条错误的提示消息"), Notification.Error);
- }
- }
- }
- }
- }
复制代码 Notification 可放置在任意位置,然后设置字体配景等等即可。
固然,这种方式是悬浮在当前页面的,如果想要悬浮在全局页面,则必须将其置于主窗口的顶部,具体方法如下:
- import QtQuick 2.15
- import QtQuick.Controls 2.15
- import QtQuick.Window 2.15
- Window {
- width: 800
- height: 600
- visible: true
- title: qsTr("Notification Test")
- Page { z: 1 }
- Page { z: 1 }
- Notification {
- id: topNotification
- z: 100
- backgroundWidth: 240
- anchors.top: parent.top
- anchors.horizontalCenter: parent.horizontalCenter
- titleFont.pointSize: 11
- messageFont.pointSize: 11
- }
- }
复制代码 须要包管其他页面 z-order 小于 Notification 组件。
【结语】
末了:项目链接(多多star呀..⭐_⭐):
Github 地址:
QmlControls/Notification at master · mengps/QmlControls · GitHubQtQml 控件 & 实用工具. Contribute to mengps/QmlControls development by creating an account on GitHub.https://github.com/mengps/QmlControls/tree/master/Notification CSDN 的:
https://download.csdn.net/download/u011283226/89662116https://download.csdn.net/download/u011283226/89662116
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |