gpt4 book ai didi

c++ - QVideoWidget 不能很好地调整大小

转载 作者:行者123 更新时间:2023-11-28 04:45:05 26 4
gpt4 key购买 nike

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

界面设计

我的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,但这并不表示它将与父级大小相同。

执行此操作的最简单方法之一是使用布局。此外,没有必要创建 QGraphicsWidgetQVBoxLayout,因此我建议您将其删除并获得默认建立的设计:

enter image description here

然后我们建立一个放置在centralWidget中的布局,在这个布局中我们添加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你可以找到完整的例子。

关于c++ - QVideoWidget 不能很好地调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49410557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com