QtWebkit实现视频透明区域
2012-01-04 17:47
169 查看
今天,想在页面上开一个区域来播放视频, 因为当前的图形层叠在视频上上面,
想要让视频露出来,就不能有任何的图形东东挡在上面。
首先,我在页面上设计了一块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!
想要让视频露出来,就不能有任何的图形东东挡在上面。
首先,我在页面上设计了一块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实现视频透明区域
- AR实现透明视频的播放
- 互动大屏,unity透明视频的实现方法:
- 背景透明(某块区域的透明度和其他地方的透明度不同)如何实现?
- iOS实现UIImageView透明区域点击事件穿透
- iOS实现UIImageView透明区域点击事件穿透
- Android实现扫一扫功能之绘制指定区域透明区域
- 自绘控件里实现控件无效区域透明效果
- iOS实现UIImageView透明区域点击事件穿透
- iOS实现UIImageView透明区域点击事件穿透
- iOS实现UIImageView透明区域点击事件穿透(OC&swift)
- cocos2d中对CCMenu 实现扩展使触摸正常图片的透明区域不触发事件
- iOS实现UIImageView透明区域点击事件穿透
- wpf 透明效果 需要DwmApi.dll文件,然后定义一个函数去画Aero区域,从而实现整个窗口的Aero化。
- [swift] UIImage NSImage PNG透明区域填充自定义颜色实现
- 视频移动侦测区域报警的原理、实现与应用
- 背景透明(某块区域的透明度和其他地方的透明度不同)如何实现?
- C#删除区域实现透明
- iOS 实现 UIImageView 透明区域点击事件穿透
- Transparent Desktop Video C#实现透明桌面视频播放源代码