QtWebkit实现视频透明区域
来源:互联网 发布:人工智能自然语言理解 编辑:程序博客网 时间:2024/05/01 21:09
今天,想在页面上开一个区域来播放视频, 因为当前的图形层叠在视频上上面,
想要让视频露出来,就不能有任何的图形东东挡在上面。
首先,我在页面上设计了一块div区域来显示视频,这块区域被设置成全透明:
<div style='position:absolute; left:256px; top:96px; width:720px; height:576px; opacity:0;''></div>
注意最后一个opacity, 设置为0的话, 就表示该div区域就是全透明了,webkit支持这一个属性。
加载该页面, 发现这个区域的确是透出来了,但不符合我们要求, 因为,这个区域透明出来以后,就显示页面的背景色了。
视频被背景色挡住了,自然是显示不出来的,看来要把页面的背景也透掉。
把<body>也加上opacity:0? 悲剧了,这个属性加上以后, 整个页面只显示背景色,其它内容都没了,原来body的opacity是让
页面上所有的东东都消失啊,显然不能这样。
把<body>的背景色设置成#00000000, 就是把前2位(argb的a位)填0。 结果是白底,马上想到webview是建立在mainwindow上,
应该是mainwindow未透明的原因吧。 于是设置mainwindow为透明:
QMainWindow window;
QWebView *view = new QWebView(&window);
window.setAttribute(Qt::WA_TranslucentBackground, true);
结果还是悲剧, 仍然是白底。
问题应该还是出在webview上面,为body设置background的a没有起作用。
不管, 试试调色板,用QT的QPalette来设置一个透明调色板来看看。
QPalette pal = view->page()->palette();
pal.setBrush(QPalette::Base, Qt::transparent);
view->setPalette(pal);
搞定了! 视频终于透出来了。
总结下, 要想在页面上挖个显示视频的洞,要做如下工作:
1. <div style='opacity:0;'></div>
2. <body style='background:#00000000;'>
3. 透明palette:
QPalette pal = view->page()->palette();
pal.setBrush(QPalette::Base, Qt::transparent);
view->setPalette(pal);
4. webview在mainwindow之上的话, 还必须让mainwindow透明
window.setAttribute(Qt::WA_TranslucentBackground, true);
Over!
- QtWebkit实现视频透明区域
- QtWebkit实现视频透明区域
- H5实现透明通道视频
- QtWebKit
- AR实现透明视频的播放
- 自绘控件里实现控件无效区域透明效果
- iOS实现UIImageView透明区域点击事件穿透
- iOS实现UIImageView透明区域点击事件穿透
- iOS实现UIImageView透明区域点击事件穿透
- iOS实现UIImageView透明区域点击事件穿透
- iOS实现UIImageView透明区域点击事件穿透
- iOS 实现 UIImageView 透明区域点击事件穿透
- iOS实现UIImageView透明区域点击事件穿透
- [swift] UIImage NSImage PNG透明区域填充自定义颜色实现
- C#绘制透明区域
- Wince 绘制透明区域
- 图片区域透明
- QtWebkit的插件Plugin设计实现
- POJ1094 Sorting It All Out 拓扑排序
- Django代码部署到CentOS服务器上
- Edit Distance(编辑距离)算法。计算两个字符串的相似程度。
- POJ 2182 Lost Cows 线段树
- P51.14
- QtWebkit实现视频透明区域
- c++多态性和纯虚函数
- WCF大数据量传输配置
- Linux分屏
- hdu 5201 容斥原理+组合数取模
- 几步搞定Maven+Eclipse做ArcObjects二次开发
- Accessing an OpenCV Mat Data using C++
- c/c++遍历文件夹
- 五大常用算法之三:贪心算法