Я использую Qt Creator 4.5.2 (Qt 5.9.5, GCC 7.3.0 64-bit) и работаю в Ubuntu 18.04. Я просто пытаюсь получить потоковое видео с IP-камеры или воспроизвести предварительно записанное видео,Я использовал методы «QGraphicsView», «QGraphicsScene» и «QGraphicsVideoItem».
Координата верхнего левого корнета для «вида» - это (300, 200) в «CentralWidget». Видео воспроизводилось, но его смещение отключено на (-300, -200). Мне пришлось использовать метод 'setOffset (300, 200)' из QGraphicsVideoItem, чтобы получить видео в правильном положении.
На какой координате основано смещение? Я ожидал, что это была собственная координата предмета. Но, видимо, это не так. Для моего теста он основан на координате «центрального виджета». Я что-то не так понимаю?
Вот документ из 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();
Спасибо,
Стивен