我正在使用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();
谢谢
史蒂芬