实现效果

这次制作的桌面右下角弹窗,主要功能有透明度和位置动画、定时关闭、鼠标放在上面暂留。

实现思路

首先,我们需要获取桌面大小,然后 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实现桌面右下角弹窗相关推荐

  1. java socket实现桌面右下角弹窗_java实现桌面右下角弹窗效果

    最近需要一个java实现桌面弹窗的小功能,类似于电脑桌面右下角的小广告一样的功能,在csdn上找到一个很好的一个,功能很多,我去除了一点不需要的代码,改了下外观等. 修改后的代码如下: InfoUti ...

  2. java实现桌面右下角弹窗(模仿,类似于qq消息弹窗)

    最近需要一个java实现桌面弹窗的小功能,类似于电脑桌面右下角的小广告一样的功能,在csdn上找到一个很好的一个,功能很多,我去除了一点不需要的代码,改了下外观等. 原作者:https://www.c ...

  3. 结合C++,网页实现消息即时提醒(桌面右下角弹窗)

    吃饭的时候 ,突然有所感悟.欣喜若狂. 首先这个不是C++外框包含网页 , 避免webbrower与一些页面的操作的不兼容性. 就是不知道这么想的,我是不是第一个.不然也能称为是一个创新. 这个想法的 ...

  4. 精仿 QQ 右下角弹窗 / 广告

    VC编写,带原版通知声音,可二次开发,100%一模一样. 1.当前版本仅支持单个广告弹出展示. 2.程序经过反复测试,目前能十分稳定地在目标机器右下角位置弹出所指定的广告. 3.百分百精仿,无论样式. ...

  5. php 右下脚弹窗,纯js的右下角弹窗实例代码

    下面小编就为大家带来一篇纯js的右下角弹窗实例代码.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 这个弹窗是如下图的效果: 打开网页的时候,这个弹窗会淡入,之后点击右上 ...

  6. WPF 右下角弹窗的简单实现

    软件中经常出现右下角弹窗,从下面缓缓弹出的,这次就做个简陋的实现, 思路就是在窗口加载和关闭时执行动画DoubleAnimation 今天懒得做界面了,只实现了功能. 看看效果: 下面看看代码: 主窗 ...

  7. Win7系统桌面右下角托盘图标不显示原因和解决方法

    有位Ghost win7系统用户说开机桌面右下角托盘图标不见了,不显示托盘图标对操作有所影响,每次需要点击"←"按钮才可以显示,过一会又自动消失,什么原因导致的呢?出现这样的情况是 ...

  8. 获取大麦网孟鹤堂演出数据并播报和在右下角弹窗提示

    #!/usr/bin/env python # coding=utf-8#!/usr/bin/env python # coding=utf-8 # 获取大麦网孟鹤堂演出数据并播报和在右下角弹窗提示i ...

  9. java检测弹窗并自动enter_JAVA实现自动检测股票波动情况,然后桌面上弹窗显示...

    JAVA实现自动检测股票波动情况,然后桌面上弹窗显示,可以减少盯盘时间 import java.awt.Color; import java.awt.Font; import java.awt.Tex ...

最新文章

  1. UIActivityViewController: LaunchServices: invalidationHandler called
  2. 我是非计算机专业学生,非计算机专业学生怎么走上计算机技术之路?
  3. Java 洛谷 P1014 Cantor表
  4. Linux socket / 端口复用
  5. Mongo Windows 基本使用入门
  6. StringFormat
  7. 电脑开机3秒就重启循环_电脑修好后客户不愿支付上门费,行,那电脑开机60秒自动关机吧!...
  8. matlab中rgb转hsv,matlab实现RGB与HSV(HSB)、HSL和HSI的色彩空间互转
  9. 【Hoxton.SR1版本】Spring Cloud Gateway之如何进行限流
  10. 股票分时数据HTML,股票历史分时数据
  11. Spring全家桶+分布式微服务(十次方)
  12. 四叶草efi_Clover Configurator——四叶草配置引导工具
  13. 【小程序】快来开发你的第一个微信小游戏(详细流程)
  14. 十二生肖属相年份对照表(农历1900--2103)
  15. 【Matlab三维路径规划】A_star算法机器人栅格地图三维路径规划【含源码 190期】
  16. 丰田、雷克萨斯决定在今年将亚马逊Alexa应用到部分车型中
  17. python代码完成Fisher判别
  18. c#对使用US7ASCII的oracle存取中文的问题
  19. Day10 空时编码理论之无线信道、分集和复用
  20. Ubuntu 22.04 解决使用 .AppImage 文件方法

热门文章

  1. UI automator viewer 将MuMu模拟器识别为横屏的解决方法
  2. .sh脚本文件的执行方式
  3. Python 系列(一)- 收藏集 - 掘金
  4. MATLAB播放音频sound
  5. 【课件制作软件】Focusky教程 | 如何在Foucksy中添加空白页?
  6. 别找了,这可能是全网最全的鸿蒙(HarmonyOS)刷机指南!
  7. jpg图片怎么改大小kb?jpg文件变小的简单方法
  8. 帆软官方的数据工厂插件太贵了。自己开发一个简单好用。
  9. 5V升压12.6V芯片电路图,三节锂电池充电
  10. 2021年「资料员」-通用基础及岗位技能(资料员)考试资料