Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt应用程序断言在第二次启动时失败_Qt_Qgraphicsview_Assertion - Fatal编程技术网

Qt应用程序断言在第二次启动时失败

Qt应用程序断言在第二次启动时失败,qt,qgraphicsview,assertion,Qt,Qgraphicsview,Assertion,再次尝试在QGraphicsView中显示视频。现在我在第二次应用程序启动后出现断言失败: 在文件player\mfvideorendercontrol.cpp的第2346行断言:“m_surface” 这是我的密码: pl = new QMediaPlayer(); vid = new QGraphicsVideoItem(); pl->setVideoOutput(vid); qDebug() << pl->error(); vid->setSize( QSi

再次尝试在QGraphicsView中显示视频。现在我在第二次应用程序启动后出现断言失败:

在文件player\mfvideorendercontrol.cpp的第2346行断言:“m_surface”

这是我的密码:

pl = new QMediaPlayer();
vid = new QGraphicsVideoItem();
pl->setVideoOutput(vid);
qDebug() << pl->error();

vid->setSize( QSizeF(1920, 1080) );
vid->setPos(QPointF(-500,-500));

pl->setMedia( QUrl::fromLocalFile( path ) );
qDebug() << pl->error();

ui->graphicsView->scene()->addItem(vid);
ui->graphicsView->setFixedSize(1920, 1080);
qDebug() << pl->error();
pl->play();
pl=newqmediaplayer();
vid=新的QGraphicsVideoItem();
pl->设置视频输出(vid);
qDebug()错误();
视频->设置大小(QSizeF(19201080));
视频->设置位置(QPointF(-500,-500));
pl->setMedia(QUrl::fromLocalFile(path));
qDebug()错误();
用户界面->图形视图->场景()->附加项(视频);
ui->graphicsView->setFixedSize(19201080);
qDebug()错误();
pl->play();
我用*.avi和*.mp4文件进行了测试。同样的问题。以下是步骤:

  • 我正在将avi文件放入路径中
  • 构建/启动应用程序
  • 一切都很好。录像作品
  • 关闭应用程序,再启动一次
  • 断言失败
  • 将路径中的文件更改为mp4
  • 构建/启动应用程序
  • 一切又好起来了
  • 等等
如果我在断言窗口中按
Skip
,一切都会恢复正常


提前谢谢。

找到了解决方案。当调用set media时,有一种可能性,那就是此时并没有初始化播放器所需的所有内容。解决方案是添加类似于
QTimer::singleShot(1000,这个,SLOT(initAndPlayVideo())或将此插槽放在某个按钮上单击