QVideoWidget 不能很好地调整大小
QVideoWidget doesn't resize well
我有一个 Qt 应用程序,它可以简单地从默认网络摄像头捕获并将其显示在 QVideoWidget 上。在 ui 中,我有一个简单的 MainWindow,在 VerticalLayout 中有一个 QGraphicsView:
ui设计
我的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 链时,我什么也看不到。
当您使用以下指令时:
m_viewfinder = new QVideoWidget(ui->captureView);
您将m_viewfinder
设置为captureView
的父级,因此m_viewfinder
的位置将相对于captureView
,但这并不表示它将与父级大小相同。
最简单的方法之一是使用布局。另外,不需要创建QGraphicsWidget
或QVBoxLayout
,所以我建议你删除它并获得默认建立的设计:
然后我们建立一个layout放在centralWidget
里面,在这个layout里面我们添加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();
}
...
在下面link你可以找到完整的例子。
我有一个 Qt 应用程序,它可以简单地从默认网络摄像头捕获并将其显示在 QVideoWidget 上。在 ui 中,我有一个简单的 MainWindow,在 VerticalLayout 中有一个 QGraphicsView:
ui设计
我的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 链时,我什么也看不到。
当您使用以下指令时:
m_viewfinder = new QVideoWidget(ui->captureView);
您将m_viewfinder
设置为captureView
的父级,因此m_viewfinder
的位置将相对于captureView
,但这并不表示它将与父级大小相同。
最简单的方法之一是使用布局。另外,不需要创建QGraphicsWidget
或QVBoxLayout
,所以我建议你删除它并获得默认建立的设计:
然后我们建立一个layout放在centralWidget
里面,在这个layout里面我们添加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();
}
...
在下面link你可以找到完整的例子。