Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3423444
  • 博文数量: 864
  • 博客积分: 14125
  • 博客等级: 上将
  • 技术积分: 10634
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-27 16:53
个人简介

https://github.com/zytc2009/BigTeam_learning

文章分类

全部博文(864)

文章存档

2023年(1)

2021年(1)

2019年(3)

2018年(1)

2017年(10)

2015年(3)

2014年(8)

2013年(3)

2012年(69)

2011年(103)

2010年(357)

2009年(283)

2008年(22)

分类: C/C++

2010-12-06 09:03:27

QT中嵌入SDL

一.
yay-20060421-2.zip这个包是一个使用SDL的YUV的播放器源代码,在Linux下可用。
二.
至于往QT里嵌入SDL,你可以这样
这个是.pro文件部分代码:
unix {
-lSDL \

-lSDLmain

}

win32 {

LIBS += -L./lib/Win32Lib \

-lSDL \

-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的代码其实很恶心,也最重要!在初始化的时候加上这么一段代码:

/*set sdl env*/
char variable[64];

#ifdef Q_OS_WIN
sprintf(variable, "SDL_WINDOWID=0x%lx", frame_pre->winId());
#else
sprintf(variable, "SDL_WINDOWID=0x%lx", this->winId());
#endif

putenv(variable);

把 QT的窗口句柄的winId值,赋给SDL的环境变量就可以了,但这在windows下和linux下有点区别,frame_pre为 MainWindow下的一个frame。你不能将MainWindow的句柄赋给SDL,但在Linux下,你又必须把MainWindow的句柄赋给 SDL,不能把frame的窗口句柄赋给SDL,具体是为什么,我没去研究,可能是跟windows和linux的窗口机制不一样有关,哪为知道为什么的 请告诉我为什么。
附件: (21 K)
阅读(898) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~