QT窗口置顶/真透明/背景模糊/非矩形/跳过任务栏分页器/无边框/无焦点点击/焦点穿透

摘要:
背景模糊kde扩展Plasma::WindowEffects::enableBlurBehind背景模糊需要窗口管理器开启模糊特效,否则无效。kdekwin的扩展标识,其它桌面上可能没有模糊效果。跳过任务栏分页器kde里是KWindowSystem::setState这样的窗口经过隐藏再显示出来时,如果程序其它对话框弹出,原先设置跳过任务栏分页器的窗口将失效。kimtoy的状态栏窗口在弹出关于kimtoy对话框或者设置对话框后就不能跳过任务栏分页器的,即通过此法解决,krunner也是这样的。

qt 窗口置顶/真透明/背景模糊/非矩形/跳过任务栏分页器/无边框/无焦点点击/焦点穿透
窗口置顶
qt 里是 setWindowFlags(Qt::WindowStaysOnTopHint)
kde 里是 KWindowSystem::setState(winId(), NET::KeepAbove)
这样的置顶窗口不会处于全屏窗口的上方,如果需要真正的置顶,setWindowFlags(Qt::X11BypassWindowManagerHint) 可无视这个规则,但这样不会出现任务栏等,kimtoy 的预编辑窗口就是真正的置顶。

真透明

qt 里是 setAttribute(Qt::WA_TranslucentBackground, true)
真透明需要窗口管理器开启混成,否则透明区域将显示为黑色,这时候可以用非矩形来抠去黑色区域。

背景模糊

kde 扩展 Plasma::WindowEffects::enableBlurBehind(winId(), true, /*这里有个参数指定模糊区域*/)
背景模糊需要窗口管理器开启模糊特效,否则无效。kde kwin 的扩展标识,其它桌面上可能没有模糊效果。

非矩形

qt 里是 setMask(/*这里有个参数指定非矩形区域*/)
没有开桌面混成的时候达到没有黑色区域的效果,形状复杂的话相当消耗资源,使用非透明区域作为形状会产生边缘锯齿。
跳过任务栏分页器
kde 里是 KWindowSystem::setState(winId(), NET::SkipTaskbar | NET::SkipPager)
这样的窗口经过隐藏再显示出来时,如果程序其它对话框弹出,原先设置跳过任务栏分页器的窗口将失效。解决办法是实现 showEvent(QShowEvent* event) 中再次调用一下。kimtoy 的状态栏窗口在弹出关于kimtoy对话框或者设置对话框后就不能跳过任务栏分页器的,即通过此法解决,krunner也是这样的。
无边框
qt 里是 setWindowFlags(Qt::FramelessWindowHint)
实际上只要能获得焦点,ctrl+f3 打开kwin的菜单还能还原的哦,比如krunner,很多plasmiod。。

无焦点点击

qt 里是 setAttribute(Qt::WA_X11DoNotAcceptFocus, true)
无焦点点击的意思是用鼠标在窗口上进行操作而不将键盘输入的焦点转移到窗口中。kimtoy 的状态栏窗口就是这样子,鼠标可以切换功能,但输入法的各个状态依然是输入焦点窗口而非 kimtoy 状态栏窗口的,这样可实现真正的 Dock。
焦点穿透
很遗憾qt没有这个函数只好直接用x11shape的 XShapeCombineRectangles(QX11Info::display(), winId(), ShapeInput, 0, 0, NULL, 0, ShapeSet, YXBanded)

焦点穿透的意思是所有鼠标键盘操作全部会穿透窗口到下方窗口。有个 Qt::WA_TransparentForMouseEvents 可以对子部件实现,而窗口本身不行。kimtoy 没用到这个,不过很多 osd 桌面歌词程序经常用,网上找了下只有 gdk 的实现,于是就把 qt 的写在这里啦。

本文章转自http://blog.csdn.net/outmanlee/article/details/7451097

免责声明:文章转载自《QT窗口置顶/真透明/背景模糊/非矩形/跳过任务栏分页器/无边框/无焦点点击/焦点穿透》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇下载Sourceforge等国内无法下载站点文件的另一种方法Openlayers 实现轨迹播放/暂停/重新播放/从点击处播放/提速/减速下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

处理win7任务栏通知区域图标异常问题

故障现象:安装的某软件比如QQ,应用程序运行图标始终没有在win7任务栏通知区域显示出来,经观查发现win7任务栏通知区域有几个已删除应用的图标出现,应该是有故障了。 故障现象一:已经卸载的程序,还在通知区域显示图标,清理缓存。 处理步骤: 1. 打开注册表,依次定位到:HKEY_CLASSES_ROOTLocal SettingsSoftwareMicr...

winxp注册表之开始菜单和任务栏

WINDOWS的开始菜单突然不能保留最近访问程序的记录,用起来很是不方便。因此在网上找了好久却没有找到。 这次查到相关的资料,留存下来。 21. 如何去除“开始”菜单中的“收藏夹”菜单 用于从“开始”菜单中去除“收藏夹”菜单。 具体操作步骤如下: (1)打开注册表编辑器,找到如下表所示的项。 (2)按照下表设置,新建或者修改已有的一个名称为“NoFavor...

(转)Windows Server 2012 R2桌面化详细设置图解

一、任务栏左下角启动服务器管理器,然后进行设置。 1、登录不显示服务器管理器 2、本地服务器,看到右边的IE增强的安全配置,如图所示,关闭两项内容。这样就关闭了IE增强安全提示框。 3、“工具”菜单,启动“服务”,启动两项声音服务(Windows AudioWindows Audio Endpoint Builder),并设为自动属性。 4、 “管...

Win10系统,怎样将文件夹固定到开始屏幕/任务栏?

转载自百度经验:Win10系统,怎样将文件夹固定到开始屏幕/任务栏-百度经验 (baidu.com) 当我们将软件快捷方式、文件夹、文件等一股脑放在电脑桌面上时,桌面就会变得凌乱而不美观,从而影响上网的心情和做事的效率,其实我们可以将常用的文件夹、软件等放到“开始”屏幕或任务栏上,这样既保证了打开的便捷性,又使电脑桌面变得干净美观。 工具/原料...

一个体验好的Windows 任务栏缩略图开发心得

本文来自网易云社区 作者:孙有军 前言: 对于一个追求极致体验的软件来说,利用好系统的每一点优秀的特性,将会大大提高软件的品质。 Windows vista以来任务栏缩略图,及Win + TAB的程序切换预览图的定制也是对软件体验的一个巨大提升,这里我对云音乐中使用到的任务栏缩率图显示专辑封面,并且控制播放歌曲操作的开发做下简单的分享。 缩...

C++隐藏任务栏图标

在VC编程中,有时候我们需要将我们的程序在任务栏上的显示隐藏起来,我试过几种方法,下面我介绍一下我知道的三种方法。   第一种方法是设置窗口WS_EX_TOOLWINDOW扩展样式,通过在OnInitDialog函数中添加如下代码:   ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);   ModifySty...