• 12844阅读
  • 5回复

在label上把视频图像一帧帧显示出来了,但怎么在上面画图呢? [复制链接]

上一主题 下一主题
离线gink_chen
 
只看楼主 倒序阅读 楼主  发表于: 2011-12-08

<DIV id=read_118777 mb10?>现在我已经在label上把视频图像一帧帧显示出来了,通过在paintEvent中setPixmap显示图片的,但怎么在上面画图呢? 求指点方向!!!主要做成以下效果:<DIV mb10?>
离线wxj120bw

只看该作者 1楼 发表于: 2011-12-08
回 楼主(gink_chen) 的帖子
你尝试放着Widget,然后设置背景透明,然后在这层画图,应该就可以显示
离线gink_chen
只看该作者 2楼 发表于: 2011-12-09
回 1楼(wxj120bw) 的帖子
我不太明白,是在label的上面再放一个widget?
离线wxj120bw

只看该作者 3楼 发表于: 2011-12-09
回 2楼(gink_chen) 的帖子
设置这个属性setAttribute(Qt::WA_TranslucentBackground, true); 然后在上面绘图 你尝试下
离线roywillow

只看该作者 4楼 发表于: 2011-12-09
可以在这个label上再覆盖一层透明的widget
因为任何QWidget都是可以作为容器的,所以可以给这个label内部设置一个layout,然后将一个widget放进去,在这个widget中重写paintEvent之类的来实现绘制
不过你已经是重写这个label的paintEvent了?那么你用QPainter应该很容易在上面继续画吧。不过你说在paintEvent中用setPixmap的理由是什么?
这个函数你用不到在paintEvent中进行啊
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线cutemmll
只看该作者 5楼 发表于: 2011-12-09
回 2楼(gink_chen) 的帖子
正如1楼所说的那样,你可以用一个新的widget作为容器,把你现在显示视频图像的QLabel放在窗体的底层,然后再用一个新的QLabel覆盖在上面,也就是总共有两层窗体,下面那层的QLabel显示视频图像,上面那一层QLabel就显示你要绘制的线条。


ps:要把某个窗体设置到顶层可以使用raise方法,前提条件是这些窗体都具有同一个父窗体。文档描述如下


void QWidget::raise () [slot]


Raises this widget to the top of the parent widget's stack.
After this call the widget will be visually in front of any overlapping sibling widgets.
Note: When using activateWindow(), you can call this function to ensure that the window is stacked on top.
See also lower() and stackUnder().

c------------enjoy qt & enjoy life-----------++
快速回复
限100 字节
 
上一个 下一个