我有SDL_surface
在自己的窗口中播放视频。我想要在QWidget
上呈现此窗口。我想要一个通用的解决方案,因为我的目标是OSX,Windows和Linux。
我遇到2 solutions总结如下:
Window ID hack 涉及将SDL_WINDOWID
设置为QWidget的ID,以便SDL 在QWidget上推送像素。这是来自相关主题的Example Qt snippet。
但是,这在OS X上不起作用,并且不能保证在所有Win和Linux平台上都能正常工作。
从非窗口SDL_surface手动复制到QWidget。
找到了一些example code for Gtk+但到目前为止没有Qt。我们的想法是将视频推送到内存并从QWidget中提取。当然不应该使用QImage来渲染每个帧。那么如何实现这种复制呢?
可能有重复的问题,但我的问题更具体地说明了平台无关性
答案 0 :(得分:2)
从SDL_Surface
中检索像素并使用它创建QImage
,然后使用QPainter
在小部件上绘制QImage
。