以独立于平台的方式在QWidget上呈现SDL_surface

时间:2012-06-27 18:15:11

标签: qt sdl

我有SDL_surface在自己的窗口中播放视频。我想要在QWidget上呈现此窗口。我想要一个通用的解决方案,因为我的目标是OSX,Windows和Linux。

我遇到2 solutions总结如下:

  1. Window ID hack 涉及将SDL_WINDOWID设置为QWidget的ID,以便SDL 在QWidget上推送像素。这是来自相关主题的Example Qt snippet

    但是,这在OS X上不起作用,并且不能保证在所有Win和Linux平台上都能正常工作。

  2. 从非窗口SDL_surface手动复制到QWidget。

    找到了一些example code for Gtk+但到目前为止没有Qt。我们的想法是将视频推送到内存并从QWidget中提取。当然不应该使用QImage来渲染每个帧。那么如何实现这种复制呢?

  3. 可能有重复的问题,但我的问题更具体地说明了平台无关性

1 个答案:

答案 0 :(得分:2)

SDL_Surface中检索像素并使用它创建QImage,然后使用QPainter在小部件上绘制QImage