“ QGraphicsVideoItem”类中“ offset()或setOffset”的坐标

时间:2019-10-08 15:29:05

标签: c++ qt qgraphicsview qgraphicsscene qgraphicsitem

我正在使用Qt Creator 4.5.2(Qt 5.9.5,GCC 7.3.0 64位)并在Ubuntu 18.04上运行 我只是想从IP摄像机获取实时视频流或播放预先录制的视频。我使用了“ QGraphicsView”,“ QGraphicsScene”和“ QGraphicsVideoItem”方法。

“ centralWidget”上左上角“视图”的坐标是(300,200)。视频可以播放,但其偏移量为(-300,-200)。我必须使用'QGraphicsVideoItem'的'setOffset(300,200)'方法将视频放置在正确的位置。

“偏移”基于什么坐标?我曾以为它是基于项目自己的坐标的。但是,显然不是。对于我的测试,它基于“ centralwidget”的坐标。我有什么不对吗?

这是QT的“偏移”文档: QGraphicsVideoItem将使用其左上角的偏移量绘制视频。

这是我的代码。我只将相关部分复制并粘贴到这里。

   mpView = ui->gvCam; // Top left corner offset is: (300, 200)
   mpScene = new QGraphicsScene;
//   mpScene = new QGraphicsScene(mpView);
   mpView->setScene(mpScene);
   mpScene->setSceneRect(mpView->x(), mpView->y(), mpView->width(), mpView->height());

   mpVideoItem = new QGraphicsVideoItem;
   mpPlayer = new QMediaPlayer(this, QMediaPlayer::StreamPlayback);

   mpPlayer->setMedia(QUrl::fromLocalFile("/home/test1/Videos/tmp1.avi"));
   mpPlayer->setVideoOutput(mpVideoItem);

   mpScene->addItem(mpVideoItem);
   QSizeF qsf1(mpView->width(), mpView->height());
   mpVideoItem->setSize(qsf1);
   mpVideoItem->setAspectRatioMode(Qt::IgnoreAspectRatio);

   // I have to set the following offset to get the video at the correct location. WHY?
   QPointF qpf1(mpView->x(), mpView->y());
   mpVideoItem->setOffset(qpf1);

   mpPlayer->play();

谢谢

史蒂芬

0 个答案:

没有答案