| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2655 人关注过本帖
标题:[提问]关于Qt中图形与图像叠加显示的问题
只看楼主 加入收藏
chaosgrass
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-7-23
收藏
 问题点数:0 回复次数:2 
[提问]关于Qt中图形与图像叠加显示的问题
使用Qt开发的一个项目,涉及到需要将图形与图像融合显示,需要将显示分层:
1. 上层显示图形窗口与控件(Qt GUI),下层显示30帧/秒的动态图像视频(OpenGL);
2. GUI绘制透明色处,显示下层视频图像;
3. Qt GUI需要响应用户交互(鼠标、键盘、焦点)。

感觉这应用开发中是个常见需求,我尝试过几种方案:
1. QGLWidget控件内嵌QWidget控件
--结果:失败,OpenGL内部无法绘制QWidget

2. 通过QGraphicsView::setViewport(new QGLWidget),在QGLWidget中绘制动态视频图像,在QGraphicsView中绘制图形;
--这种方案对需求有一定限制,在图像范围内只显示QGraphicsItem,不显示通用控件
--结果:失败,当QGLWidget设置为QGraphicsView的Viewport后,上面的OpenGL动画无法显示;

3. 看了dbzhang800的blog,发现在Qt5.0下,QWindow可以指定QBackingStore,于是想利用QWindow作为QWidget的容器,让QWidget绘制到QWindow上,最后将QBackingStore内容导出:
--问题1:QWidget不能显式地作为QWindow的子对象,感觉所有alien QWidget都会绘制到一个native QWidget(就是QWindow?),但如何获得这个native QWidget的绘制结果?
--问题2:发现QWidget有个createWindowContainer函数,只是将QWindow包装成QWidget对象,在Qt窗口树种提供原始显示,但并不能提供在QWindow上的QWidget绘制?
--问题3:如何获得窗口刷新事件,并从QBackingStore获取绘制结果?


4. Qt5.0下提供了每个平台的平台插件,可重新实现windows平台下的QPlatformIntegration插件,拦截QWindowsBackingStore::flush,实现与动态视频混合,但这样也有问题:
--问题1:图形与图像需要实现两个窗口,图形需要出现假窗口(当绘制的画布),实际图形与图像叠加融合后绘制到OpenGL窗口上(在QPlatformIntegration层次上识别窗口似乎有点不太合适);
--问题2:如何实现用户交互?用户实际看到的是图像图像叠加后的OpenGL窗口,能够操作的也只有这个窗口,如何将OpenGL窗口上的操作正确重定向给图形窗口?

5. 能否还有其他方案?恳请各位专家不吝赐教。
搜索更多相关主题的帖子: 动态 键盘 开发 项目 用户 
2013-07-23 11:38
wylove08
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-5-14
收藏
得分:0 
QStackLayout
2013-10-09 15:47
yangood
Rank: 2
等 级:论坛游民
帖 子:11
专家分:18
注 册:2013-11-1
收藏
得分:0 
希望楼主解决后  分享方法
2013-11-07 09:52
快速回复:[提问]关于Qt中图形与图像叠加显示的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018862 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved