QT中嵌入SDL
Qt 嵌入 SDL
2023-09-14 09:07:01 时间
前段时间在做一个音视频编码板卡的PC跨平台程序,使用QT框架,其中有块功能是往QT里嵌入SDL,来播放YUV格式帧数据,现在已经在windows和linux下完成。
我浏览论坛的时候,发现好多同僚在做我以前的准备工作。在这里我把我的一些经验写出来,希望对这些同僚有点帮助,当然可能有有一些错误,请指出来,大家一起进步。
一.
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的窗口机制不一样有关,哪为知道为什么的请告诉我为什么。
相关文章
- Qt的下载安装全教程
- qt 当前窗口句柄_QT获取窗口句柄
- Qt实战:云曦日历篇
- c++使用json_qt读写json文件
- Qt-自定义可编辑模型
- c语言设计计算器-Qt学习笔记:设计一个计算器(二)
- C/C++ Qt TreeWidget 单层树形组件应用
- Qt官方示例-字体采样器
- 【Qt】Qt 开发环境安装 ( Qt 版本 5.14.2 | Qt 下载 | Qt 安装 )
- Linux下开发Qt应用程序的技术指南(Linux和qt)
- Qt QFileSystemModel功能及用法详解
- Linux编译Qt库:从零开始(linux编译qt库)
- 掌握Qt与MySQL:操作系统中数据库的应用(qtmysql操作系统)
- Qt在Linux环境中的新技术应用(qt与linux程序设计)
- 精通linux Qt程序打包技术(linuxqt打包程序)
- 利用Qt轻松操作Oracle数据库(qt操作oracle)
- Qt在Linux操作系统中的运行和应用(qt运行linux)
- Linux Qt窗口:快速构建你的GUI界面(linux qt 窗口)
- Qt技术与SQLServer的完美结合(qt与sqlserver)
- QT开发MSSQL数据库技术实现(qt mssql)
- 界面让Linux拥有Qt完美图形界面的魅力(linux qt 图形)