视频在 QGraphicsView 中不正确

Posted

技术标签:

【中文标题】视频在 QGraphicsView 中不正确【英文标题】:Video not fitting in properly in QGraphicsView 【发布时间】:2017-12-19 09:21:39 【问题描述】:

我正在尝试在 QGraphicsView 中通过 rtsp 播放视频(640 * 360)。但问题是它不完全适合视图并且出现滚动条,这不应该发生。而且,我能够在 Linux 环境中获得同样的代码正常工作,但我在 Windows 中遇到了问题。

请在下面找到代码sn-p,如果有人能指出我所犯的错误会有所帮助。

    scene = new QGraphicsScene(this);
    view= new graphicsView();
    view->setScene(scene);
    videoItem = new QGraphicsVideoItem;
    player= new QMediaPlayer;
    player->setVideoOutput(videoItem);
    view->scene()->addItem(videoItem);
    controlLayout = new QHBoxLayout;
    controlLayout->setMargin(0);
    controlLayout->addWidget(view);
    view->setSceneRect(scene->sceneRect());
    view->scale(1.97,1.97);
    ui.m_pframePlay->setLayout(controlLayout);
    ui.m_pframePlay->show();
    player->setMedia(QUrl("rtsp:..."));
    player->play();

【问题讨论】:

【参考方案1】:

QGraphicsView 的文档是关于 setSceneRect

场景矩形定义场景的范围,在视图的情况下,这意味着您可以使用滚动条导航的场景区域。

这意味着,setSceneRect 不会调整视图的可见区域的大小,而只会调整场景的哪个区域在视图中可见。所以我猜你只需要调整你的视图,例如

view->resize(scene->width()*1.97, scene->height()*1.97)

(我使用 1.97 缩放宽度/高度,因为您出于某种原因使用因子 1.97 缩放视图)。

【讨论】:

以上是关于视频在 QGraphicsView 中不正确的主要内容,如果未能解决你的问题,请参考以下文章

如何在 QGraphicsView 上添加效果?

如何在不缩放场景的情况下与 QGraphicsView 左侧的矩形对齐?

尝试在 QGraphicsScene 和 QGraphicsView 中显示 opencv 视频,但没有显示

如何在 QGraphicsView 中自动正确设置矩形?

如何在鼠标正下方的 QGraphicsView 上正确放置小部件?

带有滚动条的 QGraphicsView 内不需要的边距