我试图在包含视频视图的窗口上显示对话框。这是打开对话框的代码:
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上的两台不同的计算机上。