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更新==============
有的兄弟搞不定,没办法,做了个例子给你们参考了,别说我忽悠你:
下一步继续研究opengl绘图并加osd,毕竟cpu绘图耗时,性能不够爽。有知道的指点一下。
苦逼:我也在做相关的工作,用到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 回复