在Qt Widget中的视频上绘画

时间:2009-07-09 13:20:53

标签: c++ qt

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

3 个答案:

答案 0 :(得分:1)

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

有几种方法可以从这里开始,在Xorg的某些版本/配置上可能不起作用的更好的方法是让第二个窗口与第一个窗口的大小相同,并将它直接放在另一个窗口的上面(有移动时移动另一个窗口的机制),并使窗口透明,除了你的控件(透明度是某些版本的X的问题,请查看labs.trolltech.com的一些例子)。

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

答案 1 :(得分:0)

我建议您查看用于播放视频的Phonon框架。它应该在不调用单独的可执行文件的情况下处理播放,这可能会解决绘画问题。

答案 2 :(得分:0)

将视频封装在窗口小部件中,将QImage发送到插槽中,将其转换为QPixmap,在覆盖的paintEvent()期间在窗口小部件上绘制。

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

希望这有帮助。