'QGraphicsVideoItem'类中'offset()或setOffset'的坐标

问题描述 投票:0回答:1

我正在使用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的'offset'文件: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();

谢谢,

史蒂文

c++ qt qgraphicsview qgraphicsscene qgraphicsitem
1个回答
0
投票

得到上述帮助的答案。谢谢。将其标记为已解决。

© www.soinside.com 2019 - 2024. All rights reserved.