QT4中使用SDL显示图像问题,如何使用QT4的窗口

yuyoucuobei 2013-04-15 07:20:37
环境:
UBUNTU12.04
SDL-12.15
QT4 CREATOR 2.4.1 基于QT 4.8.0(64BIT)

问题描述:
目前有一个LINUX下可以使用的多媒体库,使用SDL+FFMPEG开发
现在要移植到QT上,使用QT来做界面,如何使SDL的视频显示在QT的窗口中?

进度:
在网上查了很多资料,都说是使用SDL_putenv()函数来设置SDL_WINDOWID环境变量来达到目的,但是实际使用在我的代码中,没有效果,视频窗口依然是独立的SDL创建的窗口,不明白为什么

//QT主窗口构造函数中,设置环境变量
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);

/*set sdl env*/
char variable[64];
sprintf(variable, "SDL_WINDOWID=0x%lx", this->winId());
SDL_putenv(variable);
}

//按钮2用来选择一个媒体文件,并创建线程开始播放视频
void MainWindow::on_pushButton_2_clicked()
{
vp->pause();
filename = QFileDialog::getOpenFileName(
this, "open file dialog",
"/", //乱码
"Movie files (*.rmvb *.flv *.mp3 *.wmv *.wma *.mp4);;All files (*)");

if (!filename.isEmpty())
{
ui->label->clear();
ui->label->setText(filename);
qDebug() << filename ; //<<player->totalTime()<<player->state()<<player->type();

vp->setFile(filename); //设置文件名
vp->playstart(); //视频线程开始
ui->pushButton->setText("PAUSE");
}
}


求指点,有思路也可以,非常感谢!
...全文
171 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuyoucuobei 2013-04-16
  • 打赏
  • 举报
回复
好吧,今天有进展了,putenv设置环境变量必须放在main中才有效。。。

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;

    /*set sdl env*/
    char variable[64];
    sprintf(variable, "SDL_WINDOWID=%d", w.winId());
    SDL_putenv(variable);

    w.show();
    
    return a.exec();
}

16,215

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧