3

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

我遇到了两种解决方案,总结如下:

  1. Window ID hack涉及设置SDL_WINDOWID为 QWidget 的 id,以便 SDL像素推送到 QWidget。这是来自相关线程的示例 Qt 片段。

    但是,这不适用于 OS X,并且不能保证在所有 Win 和 Linux 平台上都可以使用。

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

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

可能有重复的问题,但我的问题是关于平台独立性的更具体的问题

4

1 回答 1

2

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

于 2012-06-27T19:56:34.357 回答