详解 QT 中嵌入SDL教程

移动开发
本文介绍的是QT 中嵌入SDL教程,环境是在Windows和Linux下完成的,先来看内容。

QT 中嵌入SDL教程是本文要介绍的内容,前段时间在做一个音视频编码板卡的PC跨平台程序,使用QT框架,其中有块功能是往QT里嵌入SDL,来播放YUV格式帧数据,现在已经在windows和linux下完成。

我浏览论坛的时候,发现好多同僚在做我以前的准备工作。在这里我把我的一些经验写出来,希望对这些同僚有点帮助,当然可能有有一些错误,请指出来,大家一起进步。

一.yay-20060421-2.zip这个包是一个使用SDL的YUV的播放器源代码,在Linux下可用。

二.至于往QT里嵌入SDL,你可以这样

这个是.pro文件部分代码:

  1. unix {   
  2. -lSDL \  
  3. -lSDLmain   
  4. }  
  5. win32 {   
  6. LIBS += -L./lib/Win32Lib \  
  7. -lSDL \  
  8. -lSDLmain   

Windows下的SDL库文件有3个sdl.lib, SDLmain.lib 和sdl.dll。将sdl.lib,SDLmain.lib 放在./lib/Win32Lib目录下,讲sdl.dll跟你的执行文件放在一起。

Linux下一般都为帮你安装好SDL,如果没安装还没关系,下一个,配置下环境变量。Linux下的SDL静态库为libSDL.a和libSDLmain.a。

三.SDL实现代码,参考yay-20060421-2.zip 里面的代码就行。往QT里嵌入SDL的代码其实很恶心,也最重要!在初始化的时候加上这么一段代码:

  1. /*set sdl env*/  
  2. char variable[64];  
  3. #ifdef Q_OS_WIN  
  4. sprintf(variable, "SDL_WINDOWID=0x%lx", frame_pre->winId());  
  5. #else  
  6. sprintf(variable, "SDL_WINDOWID=0x%lx", this->winId());  
  7. #endif  
  8. putenv(variable); 

QT的窗口句柄的winId值,赋给SDL的环境变量就可以了,但这在windows下和linux下有点区别,frame_pre为MainWindow下的一个frame。你不能将MainWindow的句柄赋给SDL,但在Linux下,你又必须把MainWindow的句柄赋给SDL,不能把frame的窗口句柄赋给SDL,具体是为什么,我没去研究,可能是跟windowslinux的窗口机制不一样有关,哪为知道为什么的请告诉我为什么。

小结:QT 中嵌入SDL教程,更多内容请参考编辑推荐,最后希望本文对你有帮助!

责任编辑:zhaolei 来源: CSDN博客
相关推荐

2011-06-24 09:39:05

2011-09-01 15:51:53

Qt插件VS 2010

2011-06-24 10:54:34

Qt Mysql

2011-09-07 16:28:46

QT WidgetQWidget

2011-06-24 17:05:07

QT QT 4.7.3 windows

2011-09-01 16:01:25

Qt插件

2011-06-14 11:48:38

Webkit QT

2011-07-04 17:26:00

Qt SQLite

2011-08-29 10:59:47

QtWebkit嵌入式

2011-06-24 14:17:58

Qt 容器类 QVector

2011-06-24 09:22:54

QT .pro文件 qmake

2011-06-24 15:16:33

Qt 插件

2011-06-29 17:20:20

Qt 内存 QOBJECT

2011-06-28 15:18:45

Qt 单例模式

2011-06-30 10:36:07

QT Graphics View

2011-06-20 09:26:38

Linux qtopia QT

2011-06-30 10:09:26

QT Graphics View

2011-08-30 14:25:06

QT数据库

2011-06-30 10:22:48

QT Graphics View

2011-07-04 17:45:45

Qt Sqlite 数据库
点赞
收藏

51CTO技术栈公众号