QVideoWidget没有很好地调整大小

时间:2018-03-21 15:36:32

标签: c++ qt multimedia qtmultimedia qvideowidget

我有一个Qt应用程序,只需从默认网络摄像头捕获并在QVideoWidget上显示。在ui中,我有一个简单的MainWindow,在VerticalLayout中有一个QGraphicsView:

ui design

我的mainwindow.cpp =========================================== ==

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    m_viewfinder = new QVideoWidget(ui->captureView);
    m_camera = new QCamera(QCameraInfo::defaultCamera());
    m_camera->setViewfinder(m_viewfinder);

    m_camera->start();
}

MainWindow::~MainWindow()
{
    m_camera->stop();
    delete m_viewfinder;
    delete m_camera;
    delete ui;
}

执行此操作时,我会运行应用程序,但视频内容不会根据主窗口大小进行缩放。例子:

当我启动应用程序时

调整主窗口的大小

调整主窗口的大小

是否有某种方法可以让视频内容调整得很好并适合可用区域? 我已经看到了这个答案:QVideoWidget: Video is cut off,但它并没有提供任何适合我的解决方案。当使用QGraphicsView-QGraphicsScene-QGraphicsVideoItem链时,我什么也看不见。

1 个答案:

答案 0 :(得分:1)

使用以下说明时:

m_viewfinder = new QVideoWidget(ui->captureView);

您将m_viewfinder的父级设为captureView,因此m_viewfinder的位置将相对于captureView,但这并不表示它将是QGraphicsWidget与父母相同的大小。

最简单的方法之一是使用布局。此外,没有必要创建QVBoxLayoutcentralWidget,因此我建议您删除它并获取默认设置的设计:

enter image description here

然后我们建立一个位于QVideoWidget的布局,在此布局中我们添加了... MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); m_viewfinder = new QVideoWidget; QVBoxLayout *lay = new QVBoxLayout(ui->centralWidget); lay->addWidget(m_viewfinder); m_camera = new QCamera(QCameraInfo::defaultCamera()); m_camera->setViewfinder(m_viewfinder); m_camera->start(); } ...

VAT | Email1 | Email2
000 | a@a.it | b@b.it
000 | a@a.it | -
000 | a@a.it | c@c.it
000 |  -      | d@d.it

在以下link中,您可以找到完整的示例。