qt 视频 上方创建 osd 的2种方法

1、在csdn上看到的,新建一个widget,然后在构造函数里设置透明、无边框,最重要是设置为Qt::Tool窗口。

主要不要设置为Qt:Tooltip,不然他就位于所有窗口上方,而Tool只位于App上方。

这个可以实现,不过呢就是要自己计算大屏幕位置,当下方视频窗口挪动、变化时,重新计算坐标再move一次,以便达到跟随下方视频窗口的目的。

典型方案:https://blog.csdn.net/baidu_28572705/article/details/101520946


2、然而, 今天是2020年了,qt是5.14了,方法更简单了。新步骤如下:

a、拖一个widget到mainwindow

b、在widget上再放一个label或者widget2,然后用布局铺满widget,至于widget要不要铺满mainwindow随便你

c、用widget来播放视频/图片(painter.drawImage),然后你神奇的发现,widget2居然是透明的,而且再往widget2放button、dropbox等都可以见到!

显然,widget2就是我们要的osd窗口了,因为有布局加持,完全不用担心坐标问题。

实际上,widget2可以换成label、frame等,只要是透明容器就是,爽歪歪了。


===============20210900更新==============

有的兄弟搞不定,没办法,做了个例子给你们参考了,别说我忽悠你:

LYJ博客

Video_2021-09-28_085713.rar

osdOnWidget.rar

下一步继续研究opengl绘图并加osd,毕竟cpu绘图耗时,性能不够爽。有知道的指点一下。

本文为3YL原创,转载无需联系,但请注明来自labisart.com。

原创文章不易,如果觉得有帮助,可打赏或点击右侧广告支持:

查看打赏记录

发表评论请遵守党国法律!后台审核后方可显示!
  • 最新评论
  • 总共2条评论

苦逼:我也在做相关的工作,用到Qt,播放视频,并叠加图像。首先,考虑视频的获取方式,能否拿到图像数据,1、使用ffmpeg,可以获取图像,那你有图像,随便在图上画;2、调用第三方SDK,三种结果,1) 跟ffmpeg一样;2) 给YUV数据,转RGB后,随便画;3) 传入句柄,不给你数据。难点、问题在于3),目前的不完美实现是博主说的第一种方式。可以说根本针对的使用场景都是不同的,根本不应该放一块说。让人误解、且走弯路。对于3)我还没有一个较好的实现,还在纠结中。

2021-07-16 11:54:13 回复

空名网友:你好,你是那个版本?开发环境是win 还是linux?我按照你说的写了一个好像不行,请问下你的demo 能参考下吗?

2020-11-04 15:21:12 回复

  • 3YL 回复 空名网友:按照步骤来,没啥技术含量呢
  • 2020-11-06 15:27:59 回复
  • Blog v1.1© 2024 labisart.com 版权所有 | 联系:labartwork@163.com