QT开发中文网

修改一下,摄像头内容由已经设定好的ui上的Widget来显示

当然可以!如果你想将摄像头内容显示在已经设定好的 UI 上的某个 QWidget 中,可以通过设置该 QWidget 为视频播放的视图器。以下是修改后的示例代码,假设你已经在 UI 文件中放置了一个 QWidget,并命名为 videoContainer

更新后的示例代码

mainwindow.h

确保在头文件中保留对必要类的引用。

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QCamera>
#include <QVideoWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    QCamera *camera;
    QVideoWidget *videoWidget;
};

#endif // MAINWINDOW_H

mainwindow.cpp

这里我们会使用你的 UI 文件中的一个现有的 QWidget 来显示视频流。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QVBoxLayout>
#include <QCameraInfo>

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

    // 假设你在 UI 设计器中添加了一个 QWidget,并将其对象名称设置为 videoContainer。
    QWidget *videoContainer = ui->videoContainer;

    // 创建 Video Widget 用于显示摄像头画面
    videoWidget = new QVideoWidget(videoContainer);

   // 使用布局管理器以便能够适应 widget 的大小变化 (可选)
   QVBoxLayout *layout = new QVBoxLayout(videoContainer);
   layout->addWidget(videoWidget);
   
   const QList<QCameraInfo> cameras = QCameraInfo::availableCameras();
   
   if (!cameras.isEmpty()) {
       camera = new QCamera(cameras.first());
       camera->setViewfinder(videoWidget);  // 设置视频输出到 videoWidget
       camera->start();  // 启动摄像头
   } else {
       qWarning("No cameras available");
   }
}

MainWindow::~MainWindow()
{
   delete ui;
}

UI 文件设置

  1. 使用 Qt Designer:打开你的 .ui 文件,确保添加了一个 QWidget 控件,并将其对象名称设置为 videoContainer(或其他你想要的名称)。
  2. 构建和运行:保存更改后,编译并运行程序,你应该能在指定的 WIDGET 中看到摄像头的视频流。

注意事项

  • 确保安装了相应的 Qt Multimedia 模块,以支持摄像头操作。
  • 如果想要更复杂的布局和功能,可以考虑添加更多控件以及信号和槽连接,以增强用户体验。

如果有其他问题,请随时问我!


内容由零声教学AI助手提供,问题来源于学员提问

目录导航
  • 更新后的示例代码
    • mainwindow.h
    • mainwindow.cpp
  • UI 文件设置
  • 注意事项
  • 本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
    转载请注明出处:https://qt.0voice.com/?id=12930

    分享:
    扫描分享到社交APP
    上一篇
    下一篇
    发表列表
    游客 游客
    此处应有掌声~
    评论列表

    还没有评论,快来说点什么吧~

    联系我们

    在线咨询: 点击这里给我发消息

    微信号:3007537140

    上班时间: 10:30-22:30

    关注我们
    x

    注册

    已经有帐号?