【QT编程】可以拍照录像的APP

(APP还存在一点BUG待处理,基本功能可以实现)
头文件:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QCamera>
#include <QCameraInfo>
#include <QCameraViewfinder>
#include <QMediaRecorder>
#include <QCameraImageCapture>
#include <QUrl>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private slots:


    void on_pushButton_takephoto_clicked();

    void on_pushButton_start_clicked();

    void on_pushButton_stop_clicked();

private:
    Ui::Widget *ui;
    QCamera *cam;
    QCameraViewfinder *vfinder;
    QCameraImageCapture *icapture;
    QMediaRecorder *recorder;

};

#endif // WIDGET_H

cpp文件:

#include "widget.h"
#include "ui_widget.h"



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

/*
    QList<QCameraInfo> list;
    list = QCameraInfo::availableCameras();
    for(int i = 0;i < list.size();i ++)
    {
        qDebug() << list.at(i).deviceName();
        qDebug() << list.at(i).description();
        qDebug() << list.at(i).position();
        qDebug() << "####################";
    }
*/

    cam= new QCamera("/dev/video0",this);
    icapture = new QCameraImageCapture(cam);
    vfinder = new QCameraViewfinder(ui->label);
    recorder = new QMediaRecorder(cam);

    recorder->setOutputLocation(QUrl("/root/homework/20171025/02mycam/mycam/123"));

    vfinder->setGeometry(0,0,480,320);

    cam->setViewfinder(vfinder);
    cam->setCaptureMode(QCamera::CaptureStillImage);
    cam->start();

}

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


void Widget::on_pushButton_takephoto_clicked()
{
     cam->setCaptureMode(QCamera::CaptureStillImage);
     cam->start();
     icapture->capture("/root/homework/20171025/02mycam/mycam/123.jpg");
}

void Widget::on_pushButton_start_clicked()
{
    cam->setCaptureMode(QCamera::CaptureVideo);
    cam->start();
    recorder->record();
}

void Widget::on_pushButton_stop_clicked()
{
    recorder->stop();
}

界面展示:
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

smile_5me

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值