QT5 + X11实现半透明弹窗

xx说就叫这个名字 2017-10-10 08:24:58
如题,想在X11上面实现半透明效果,但是设置透明度都不行,背景变成黑色。
网上搜索发现也有人类似情况,但是无人回复,那位大神请指点下,谢谢。
...全文
1295 点赞 收藏 8
写回复
8 条回复
张小飞WPS 2017年10月13日
参考http://blog.csdn.net/tian_110/article/details/42402021
回复 点赞
张小飞WPS 2017年10月13日
X11: This feature relies on the use of an X server that supports ARGB visuals and a compositing window manager. X11(linux):此特性依赖于能提供支持ARGB视觉效果和复合式视窗管理的X服务的功能开启。
回复 点赞
军神关云长 2017年10月11日
windowOpacity : double This property holds the level of opacity for the window. The valid range of opacity is from 1.0 (completely opaque) to 0.0 (completely transparent). By default the value of this property is 1.0. This feature is available on Embedded Linux, Mac OS X, Windows, and X11 platforms that support the Composite extension. This feature is not available on Windows CE. Note that under X11 you need to have a composite manager running, and the X11 specific _NET_WM_WINDOW_OPACITY atom needs to be supported by the window manager you are using. Warning: Changing this property from opaque to transparent might issue a paint event that needs to be processed before the window is displayed correctly. This affects mainly the use of QPixmap::grabWindow(). Also note that semi-transparent windows update and resize significantly slower than opaque windows. x11的区别在这里: Note that under X11 you need to have a composite manager running, and the X11 specific _NET_WM_WINDOW_OPACITY atom needs to be supported by the window manager you are using.
回复 点赞
xx说就叫这个名字 2017年10月11日
引用 1 楼 qqwangfan 的回复:
说一下你设置不行的方法,看看是不是哪里有问题。
ui->setupUi(this); setAutoFillBackground(false); setAttribute(Qt::WA_TranslucentBackground, true); setWindowOpacity(0.5); 就这样,在Ubuntu上面跑可以半透明,但是放在x11+qt5的arm板子上面就不行,背景黑的。
回复 点赞
军神关云长 2017年10月11日
说一下你设置不行的方法,看看是不是哪里有问题。
回复 点赞
xx说就叫这个名字 2017年10月11日
引用 5 楼 year2002 的回复:
你可以参考一下“CentOS下Qt窗口透明效果失效,成黑色背景的问题” http://http://blog.csdn.net/taiyang1987912/article/details/37037657 应该是需要X服务的支持才行
感谢。 具体是什么服务呢,怎么启动?
回复 点赞
实践是最好的学习 2017年10月11日
你可以参考一下“CentOS下Qt窗口透明效果失效,成黑色背景的问题” http://http://blog.csdn.net/taiyang1987912/article/details/37037657 应该是需要X服务的支持才行
回复 点赞
xx说就叫这个名字 2017年10月11日
引用 3 楼 qqwangfan 的回复:
windowOpacity : double This property holds the level of opacity for the window. The valid range of opacity is from 1.0 (completely opaque) to 0.0 (completely transparent). By default the value of this property is 1.0. This feature is available on Embedded Linux, Mac OS X, Windows, and X11 platforms that support the Composite extension. This feature is not available on Windows CE. Note that under X11 you need to have a composite manager running, and the X11 specific _NET_WM_WINDOW_OPACITY atom needs to be supported by the window manager you are using. Warning: Changing this property from opaque to transparent might issue a paint event that needs to be processed before the window is displayed correctly. This affects mainly the use of QPixmap::grabWindow(). Also note that semi-transparent windows update and resize significantly slower than opaque windows. x11的区别在这里: Note that under X11 you need to have a composite manager running, and the X11 specific _NET_WM_WINDOW_OPACITY atom needs to be supported by the window manager you are using.
非常感谢您的回复。 那我现在怎么确认x11的两个问题呢? 1、怎么让composite manager 跑起来以及怎么确认已经跑起来呢? 2、怎么确认_NET_WM_WINDOW_OPACITY atom我是不是支持呢? 多谢。
回复 点赞
发动态
发帖子
Qt
创建于2009-11-04

1.0w+

社区成员

2.5w+

社区内容

Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区公告
暂无公告