Этот вопрос относится к этому: Размер видео не заполняет окно QGraphicsView
Я пытался использовать «scene-> addLine (...)», чтобы добавить «красный»линия на экран.Но это было далеко после вызова 'fitInView'.В начале, перекрестие было в правильном месте, в середине экрана.Но, когда видео началось (после лямбда-вызова 'fitInView'), оно полностью исчезло с экрана.Я думаю, проблема в том, что размер сцены и ее местоположение неверны.Как я могу сделать размер и начальную (x, y) для «сцены», чтобы соответствовать «представлению», чтобы перекрестие было нарисовано в правильном месте.
Вот новый код:
#include <QApplication>
#include <QMainWindow>
#include <QMediaPlayer>
#include <QGraphicsView>
#include <QGraphicsVideoItem>
#include <QGraphicsScene>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
QGraphicsView* view = new QGraphicsView;
QGraphicsScene* scene = new QGraphicsScene(view);
view->setScene(scene);
QMediaPlayer * player = new QMediaPlayer;
QGraphicsVideoItem *item = new QGraphicsVideoItem;
player->setVideoOutput(item);
player->setMedia(QUrl::fromLocalFile("/path/to/tmp1.mp4"));
// player->setMedia(QUrl("rtsp://10/0/8/100:8554/0"); // Live IP camera
scene->addItem(item);
w.resize(640, 480);
QObject::connect(scene, &QGraphicsScene::sceneRectChanged, [=](const QRectF &) { view->fitInView(item); });
player->play();
w.setCentralWidget(view);
w.show();
// Draw a crosshair
QPen p(Qt::red);
qreal centerX, centerY;
centerX = view->width() / 2;
centerY = view->height() / 2;
qreal halfLen = centerX / 2;
(void)scene->addLine(halfLen, centerY, centerX + halfLen, centerY, p);
(void)scene->addLine(centerX, centerY - 30, centerX, centerY + 30, p);
return a.exec();
}