打开对话框时正确停止QVideoWidget

时间:2015-07-14 09:59:16

标签: c++ qt video

我试图在包含视频视图的窗口上显示对话框。这是打开对话框的代码:

MyDialog* dialog=new MyDialog(this, /*...*/);
ui->centralTabWidget->setEnabled(false);
QVideoWidget* vid=findChild<QVideoWidget*>("player");

if(vid!=0){
    //Here is what I've tried so far to keep the view from freezing
    qDebug()<<"stopping mediaplayer";
    QMediaPlayer* player=vid->findChild<QMediaPlayer*>("mediaplayer");
    player->stop();
    player->setVideoOutput((QVideoWidget*)0);
    vid->setVisible(false);

    qDebug()<<"stopped mediaplayer";
}

dialog->exec();

这是创建视频视图的代码:

    if(/*condition*/){
       QVideoWidget* vw = new QVideoWidget(this);
       vw->setObjectName("player");
       vw->installEventFilter(this);

       QMediaPlayer* player = new QMediaPlayer(vw);

       ui->videoScrollArea->setFrameShape(QFrame::NoFrame);

       vLayout->addWidget(vw);

       player->setVideoOutput(vw);

       player->setMedia(QUrl::fromLocalFile("./Videos/" + target->returnVid().at(0)));

       player->setMuted(true);

       player->play();
    }

输出包含&#34;停止媒体播放&#34;并且&#34;停止了媒体播放器&#34;。当显示对话框时,程序(包括对话框)停止对点击作出反应,但Windows不会将其归类为&#34;没有响应&#34;。如果未创建视频视图,则不会发生此冻结。将应用程序窗口移动到后台也不会导致这种情况。

我尝试将对话框的几何图形设置为与视频视图不重叠,但这并没有帮助。

我一直在使用套件&#34; Qt 5.4.2 MinGW 32bit&#34;和&#34; Qt 5.4.2 MSVC2013 64bit&#34;在Windows 7上的两台不同的计算机上。

0 个答案:

没有答案