C++ 在Qt小部件中的视频顶部绘制

C++ 在Qt小部件中的视频顶部绘制,c++,qt,C++,Qt,我正在开发一个Qt应用程序,它可以播放视频并显示一些滚动条。窗口大小不得超过高度720px和宽度1280的限制。我使用MPlayer作为从进程,并将QWidget的winId()传递给它,然后它在其中渲染视频。现在,我希望在这个视频小部件的顶部有另一个小部件始终显示一些结果,但是在包含视频的小部件顶部放置一个标签小部件并不能达到这个目的,因为它会被视频反复绘制。有解决办法吗?关于它的建议?我建议你研究一下播放视频的声子框架。它应该在不调用单独的可执行文件的情况下处理播放,这可能会解决绘制问题。以

我正在开发一个Qt应用程序,它可以播放视频并显示一些滚动条。窗口大小不得超过高度720px和宽度1280的限制。我使用MPlayer作为从进程,并将QWidget的winId()传递给它,然后它在其中渲染视频。现在,我希望在这个视频小部件的顶部有另一个小部件始终显示一些结果,但是在包含视频的小部件顶部放置一个标签小部件并不能达到这个目的,因为它会被视频反复绘制。有解决办法吗?关于它的建议?

我建议你研究一下播放视频的声子框架。它应该在不调用单独的可执行文件的情况下处理播放,这可能会解决绘制问题。

以这种方式使用MPlayer时,我认为最好的选择是创建第二个窗口

有两种方法可以从这里开始,在Xorg的某些版本/配置上可能不起作用的更奇特的方法是,让第二个窗口与第一个窗口大小相同,并将其直接放在另一个窗口的顶部(当其中一个窗口被移动时,有一个机制可以移动另一个窗口),并使窗口透明,但控件除外(某些版本的X存在透明度问题,请查看labs.trolltech.com中的一些示例)


另一种方法,我相信是VLC在全屏模式下使用的方法,就是让第二个窗口只是带有控件的一个小东西,并将其定位在第一个窗口的顶部,有一个偏移,没有边框……这样当第一个窗口移动时,第二个窗口的位置就会更新。

封装视频eo在小部件中,将QImage发射到插槽中,该插槽将其转换为QPixmap,您可以在覆盖的paintEvent()期间在小部件上绘制该QPixmap

我不知道除了“信息”之外,你还需要为你的视频提供什么样的互动,但是如果你想要一些新奇的东西,QGraphicsView可以为你提供很多这样的效果


希望这能有所帮助。

我已经尝试过了,但效果不太好。我想知道VLC如何在全屏模式下显示进度条?非常感谢您的回复。我还没有时间尝试,我会发布我的进度和解决方案。