我正在使用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();
谢谢,
史蒂文
得到上述帮助的答案。谢谢。将其标记为已解决。