0% found this document useful (0 votes)
239 views4 pages

Camera.h: #Ifndef #Define Camera - H #Include #Include #Include QT - Begin - Namespace QT - End - Namespace

This document contains the header and source code for a camera application built with Qt. It defines a Camera class that inherits from QMainWindow and contains private member variables and slots to control a QCamera and QCameraImageCapture object. The class initializes the camera, connects slots for camera state changes and image capture signals, and provides methods to start/stop the camera, take a picture, and display the viewfinder or captured image.

Uploaded by

Jean Inga
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
239 views4 pages

Camera.h: #Ifndef #Define Camera - H #Include #Include #Include QT - Begin - Namespace QT - End - Namespace

This document contains the header and source code for a camera application built with Qt. It defines a Camera class that inherits from QMainWindow and contains private member variables and slots to control a QCamera and QCameraImageCapture object. The class initializes the camera, connects slots for camera state changes and image capture signals, and provides methods to start/stop the camera, take a picture, and display the viewfinder or captured image.

Uploaded by

Jean Inga
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Camera.

h
#ifndef CAMERA_H
#define CAMERA_H
#include <QCamera>
#include <QCameraImageCapture>
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui { class Camera; }
QT_END_NAMESPACE
class Camera : public QMainWindow
{
Q_OBJECT
public:
Camera(QWidget *parent = 0);
~Camera();
private slots:
void setCamera(const QCameraInfo &cameraInfo);
void startCamera();
void stopCamera();
void takeImage();
void updateCameraDevice(QAction *action);
void updateCameraState(QCamera::State);
void updateCaptureMode();
void displayViewfinder();
void displayCapturedImage();
void readyForCapture(bool ready);
void imageSaved(int id, const QString &fileName);
private:
Ui::Camera *ui;
QCamera *camera;
QCameraImageCapture *imageCapture;
bool isCapturingImage;
bool applicationExiting;
};
#endif

Camera.cpp
#include "camera.h"
#include "ui_camera.h"
#include
#include
#include
#include

<QCameraViewfinder>
<QCameraInfo>
<QMediaMetaData>
<QtWidgets>

Q_DECLARE_METATYPE(QCameraInfo)
Camera::Camera(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Camera),
camera(0),
imageCapture(0),
isCapturingImage(false),
applicationExiting(false)
{
ui->setupUi(this);
//Camera devices:
setCamera(QCameraInfo::defaultCamera());
}
Camera::~Camera()
{
delete imageCapture;
delete camera;
}
void Camera::setCamera(const QCameraInfo &cameraInfo)
{
delete imageCapture;
delete camera;
camera = new QCamera(cameraInfo);
connect(camera, SIGNAL(stateChanged(QCamera::State)), this,
SLOT(updateCameraState(QCamera::State)));
imageCapture = new QCameraImageCapture(camera);
camera->setViewfinder(ui->viewfinder);
updateCameraState(camera->state());
connect(imageCapture, SIGNAL(readyForCaptureChanged(bool)), this,
SLOT(readyForCapture(bool)));
connect(imageCapture, SIGNAL(imageSaved(int,QString)), this,
SLOT(imageSaved(int,QString)));

updateCaptureMode();
camera->start();

void Camera::takeImage()
{
isCapturingImage = true;
imageCapture->capture();
}
void Camera::startCamera()
{
camera->start();
}
void Camera::stopCamera()
{

camera->stop();
}
void Camera::updateCaptureMode()
{
QCamera::CaptureModes captureMode = 0 ? QCamera::CaptureStillImage
: QCamera::CaptureVideo;

if (camera->isCaptureModeSupported(captureMode))
camera->setCaptureMode(captureMode);

void Camera::updateCameraState(QCamera::State state)


{
switch (state) {
case QCamera::ActiveState:
ui->actionStartCamera->setEnabled(false);
ui->actionStopCamera->setEnabled(true);
ui->actionSettings->setEnabled(true);
break;
case QCamera::UnloadedState:
case QCamera::LoadedState:
ui->actionStartCamera->setEnabled(true);
ui->actionStopCamera->setEnabled(false);
ui->actionSettings->setEnabled(false);
}

void Camera::updateCameraDevice(QAction *action)


{
setCamera(qvariant_cast<QCameraInfo>(action->data()));
}
void Camera::displayViewfinder()
{
ui->stackedWidget->setCurrentIndex(0);
}
void Camera::displayCapturedImage()
{
ui->stackedWidget->setCurrentIndex(1);
}
void Camera::readyForCapture(bool ready)
{
ui->takeImageButton->setEnabled(ready);
}
void Camera::imageSaved(int id, const QString &fileName)
{
Q_UNUSED(id);
Q_UNUSED(fileName);
isCapturingImage = false;
if (applicationExiting)
close();

MAIN.CPP
#include "camera.h"
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Camera camera;
camera.show();
return app.exec();
};

You might also like