QML实现桌面右下角弹窗
实现效果
这次制作的桌面右下角弹窗,主要功能有透明度和位置动画、定时关闭、鼠标放在上面暂留。
实现思路
首先,我们需要获取桌面大小,然后 move 到右下角去,这里借助的 Screen:
//初始位置,在屏幕右下角
x: Screen.desktopAvailableWidth-width
y: Screen.desktopAvailableHeight
对于动画,我用的属性动画配合动画组。显示时先启动显示动画,动画结束启动关闭定时器,关闭时调用关闭动画。
对于内容区域,我直接放了一个 Loader ,这样就可以根据自己的需求放需要的组件在里面。
目前鼠标放在上面暂留的功能待完善(如果内容区域 MouseArea 带 hover 就没法判断了);也没有对模态框关系进行处理。
实现代码
完整代码链接(DesktopTip类型):https://github.com/gongjianbo/QmlComponentStyle/tree/master/CustomComponent
实现代码:
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12//桌面右下角弹框
//使用时给content赋值一个Item展示内容,
//如content: Rectangle{}
//目前还存在得问题:
//1.被模态框阻塞无法点击
//2.鼠标是否hover的判断,会被content的MouseArea遮盖,
//要么content的MouseArea不设置hoverEnable
Window {id: controlvisible: falsecolor: "transparent"//透明度opacity: 0//无边框-提示框flags: Qt.FramelessWindowHint | Qt.ToolTip//默认非模态modality: Qt.NonModal//初始位置,在屏幕右下角x: Screen.desktopAvailableWidth-widthy: Screen.desktopAvailableHeight//大小绑定width: content_loader.widthheight: content_loader.height+title_item.height//标题property alias title: title_text.text//内容property alias content: content_loader.sourceComponentMouseArea{id: tip_mouseanchors.fill: parenthoverEnabled: true}//标题栏Rectangle{id: title_itemheight: 30width: control.width//标题文字Text {id: title_textanchors{verticalCenter: parent.verticalCenterleft: parent.leftleftMargin: 10}}//关闭按钮-可以用image替换Rectangle{//不能绑定text大小,不然会变width: 60height: 20anchors{verticalCenter: parent.verticalCenterright: parent.rightrightMargin: 10}color: close_mouse.containsMouse?"gray":"white"border.color: "black"Text {id: close_textanchors.centerIn: parent//鼠标放上去显示关闭,否则显示倒计时text: (close_mouse.containsMouse||close_timer.time_count<1)? qsTr("Close"): close_timer.time_count+" S"}MouseArea{id: close_mouseanchors.fill: parenthoverEnabled: trueonClicked: control.hideTip()}//关闭倒计时Timer{id: close_timerproperty int time_count: 0interval: 1000repeat: trueonTriggered: {//倒计时为0,且鼠标不在上面if(time_count<1&&!tip_mouse.containsMouse&&!close_mouse.containsMouse){hideTip();}else{time_count--;}}}}}//用于加载内容Loader{id: content_loaderanchors.top: title_item.bottom}//显示-动画组ParallelAnimation{id: show_anim//透明度-从透明到显示NumberAnimation{target: controlproperty: "opacity"//从当前值到显示from: control.opacityto: 1duration: 2000}//位置NumberAnimation{target: controlproperty: "y"//从当前值到显示from: control.yto: Screen.desktopAvailableHeight-heightduration: 2000}//动画开始,显示窗口onStarted: {close_timer.time_count=5control.show()}//动画结束启动关闭倒计时onFinished: {close_timer.start()}}//关闭-动画组ParallelAnimation{id: hide_anim//透明度-从显示到透明NumberAnimation{target: controlproperty: "opacity"//从当前值到隐藏from: control.opacityto: 0duration: 2000}//位置NumberAnimation{target: controlproperty: "y"//从当前值到隐藏from: control.yto: Screen.desktopAvailableHeightduration: 2000}//结束动画开始onStarted: {close_timer.time_count=0}//动画结束关闭窗口onFinished: {close_timer.stop()control.close()}}//显示弹框function showTip(){hide_anim.stop()show_anim.start()}//隐藏弹框function hideTip(){show_anim.stop()hide_anim.start()}
}
调用:
//桌面右下角弹框Button{text: "Pop"onClicked: pop.showTip()//桌面右下角弹框CustomDesktopTip{id: poptitle: qsTr("DesktopTip")content: Rectangle{width: 300height: 200color: "green"Text {anchors.centerIn: parenttext: qsTr("DesktopTip")}//测试上层也有个MouseArea对对话框的MouseArea影响MouseArea{anchors.fill: parent//目前还不能设置hoverEnabled,不然parent的MouseArea没法判断//hoverEnabled: true}}}}
QML实现桌面右下角弹窗相关推荐
- java socket实现桌面右下角弹窗_java实现桌面右下角弹窗效果
最近需要一个java实现桌面弹窗的小功能,类似于电脑桌面右下角的小广告一样的功能,在csdn上找到一个很好的一个,功能很多,我去除了一点不需要的代码,改了下外观等. 修改后的代码如下: InfoUti ...
- java实现桌面右下角弹窗(模仿,类似于qq消息弹窗)
最近需要一个java实现桌面弹窗的小功能,类似于电脑桌面右下角的小广告一样的功能,在csdn上找到一个很好的一个,功能很多,我去除了一点不需要的代码,改了下外观等. 原作者:https://www.c ...
- 结合C++,网页实现消息即时提醒(桌面右下角弹窗)
吃饭的时候 ,突然有所感悟.欣喜若狂. 首先这个不是C++外框包含网页 , 避免webbrower与一些页面的操作的不兼容性. 就是不知道这么想的,我是不是第一个.不然也能称为是一个创新. 这个想法的 ...
- 精仿 QQ 右下角弹窗 / 广告
VC编写,带原版通知声音,可二次开发,100%一模一样. 1.当前版本仅支持单个广告弹出展示. 2.程序经过反复测试,目前能十分稳定地在目标机器右下角位置弹出所指定的广告. 3.百分百精仿,无论样式. ...
- php 右下脚弹窗,纯js的右下角弹窗实例代码
下面小编就为大家带来一篇纯js的右下角弹窗实例代码.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 这个弹窗是如下图的效果: 打开网页的时候,这个弹窗会淡入,之后点击右上 ...
- WPF 右下角弹窗的简单实现
软件中经常出现右下角弹窗,从下面缓缓弹出的,这次就做个简陋的实现, 思路就是在窗口加载和关闭时执行动画DoubleAnimation 今天懒得做界面了,只实现了功能. 看看效果: 下面看看代码: 主窗 ...
- Win7系统桌面右下角托盘图标不显示原因和解决方法
有位Ghost win7系统用户说开机桌面右下角托盘图标不见了,不显示托盘图标对操作有所影响,每次需要点击"←"按钮才可以显示,过一会又自动消失,什么原因导致的呢?出现这样的情况是 ...
- 获取大麦网孟鹤堂演出数据并播报和在右下角弹窗提示
#!/usr/bin/env python # coding=utf-8#!/usr/bin/env python # coding=utf-8 # 获取大麦网孟鹤堂演出数据并播报和在右下角弹窗提示i ...
- java检测弹窗并自动enter_JAVA实现自动检测股票波动情况,然后桌面上弹窗显示...
JAVA实现自动检测股票波动情况,然后桌面上弹窗显示,可以减少盯盘时间 import java.awt.Color; import java.awt.Font; import java.awt.Tex ...
最新文章
- UIActivityViewController: LaunchServices: invalidationHandler called
- 我是非计算机专业学生,非计算机专业学生怎么走上计算机技术之路?
- Java 洛谷 P1014 Cantor表
- Linux socket / 端口复用
- Mongo Windows 基本使用入门
- StringFormat
- 电脑开机3秒就重启循环_电脑修好后客户不愿支付上门费,行,那电脑开机60秒自动关机吧!...
- matlab中rgb转hsv,matlab实现RGB与HSV(HSB)、HSL和HSI的色彩空间互转
- 【Hoxton.SR1版本】Spring Cloud Gateway之如何进行限流
- 股票分时数据HTML,股票历史分时数据
- Spring全家桶+分布式微服务(十次方)
- 四叶草efi_Clover Configurator——四叶草配置引导工具
- 【小程序】快来开发你的第一个微信小游戏(详细流程)
- 十二生肖属相年份对照表(农历1900--2103)
- 【Matlab三维路径规划】A_star算法机器人栅格地图三维路径规划【含源码 190期】
- 丰田、雷克萨斯决定在今年将亚马逊Alexa应用到部分车型中
- python代码完成Fisher判别
- c#对使用US7ASCII的oracle存取中文的问题
- Day10 空时编码理论之无线信道、分集和复用
- Ubuntu 22.04 解决使用 .AppImage 文件方法