Display camera preview using Qt Mobility
skumar_rao
(Talk | contribs) (Created page with 'Category:Qt for SymbianCategory:Qt for Symbian {|style="background:#eceff2" width="660px" border="1" cellpadding="5" cellspacing="0" |- |'''ID''' || |'''Creation date''…') |
(→Header File) |
||
| Line 37: | Line 37: | ||
#include <qcamera.h> | #include <qcamera.h> | ||
#include <qvideowidget.h> | #include <qvideowidget.h> | ||
| − | + | class CameraApp : publoc QWidget | |
| + | { | ||
| + | Q_OBJECT | ||
| + | public: | ||
| + | CameraApp(QWidget* parent = 0); | ||
| + | ~CameraApp(); | ||
public slots: | public slots: | ||
void error(QCamera::Error); | void error(QCamera::Error); | ||
| Line 47: | Line 52: | ||
QCamera* m_camera; | QCamera* m_camera; | ||
QVideoWidget* m_videoWidget; | QVideoWidget* m_videoWidget; | ||
| + | }; | ||
</code> | </code> | ||
Revision as of 17:50, 8 April 2010
| ID | Creation date | 28th Mar 2010 | |
| Platform | S60 5th Edition | Tested on devices | Nokia N97 Mini |
| Category | Qt for Symbian | Subcategory | Qt Mobility API |
| Keywords (APIs, classes, methods, functions): QCamera, QVideoWidget |
Tip: Read this article before moving forward: Setting up environment for Qt Mobility API
Contents |
Overview
Display Camera Preview on Widget using Qt Mobility APIs
Keywords
Project configuration file (.Pro file)
- Add the Qt Mobility project configuration option in the .Pro file as shown below
CONFIG += mobility
MOBILITY += multimedia
Header File
#include <qcamera.h>
#include <qvideowidget.h>
class CameraApp : publoc QWidget
{
Q_OBJECT
public:
CameraApp(QWidget* parent = 0);
~CameraApp();
public slots:
void error(QCamera::Error);
private:
void InitCamera();
private:
QStackedWidget* m_stackedWidget;
QCamera* m_camera;
QVideoWidget* m_videoWidget;
};
Source File
QGridLayout* layout = new QGridLayout;
layout->setSpacing(0);
layout->setMargin(0);
m_videoWidget = new QVideoWidget();
QPalette black(Qt::black);
m_stackedWidget = new QStackedWidget();
m_stackedWidget->setPalette(black);
m_stackedWidget->addWidget(m_videoWidget);
m_stackedWidget->setCurrentIndex(0);
layout->addWidget(m_stackedWidget);
setLayout(layout);
InitCamera();
void CameraApp::InitCamera() {
QByteArray cameraDevice = QCamera::availableDevices()[0];
m_camera = new QCamera(cameraDevice);
connect(m_camera, SIGNAL(error(QCamera::Error)), this, SLOT(error(QCamera::Error)));
m_camera->setFocusMode(QCamera::AutoFocus);
m_videoWidget->setMediaObject(m_camera);
m_videoWidget->setAspectRatioMode(QVideoWidget::KeepAspectRatio);
if (m_camera->state() == QCamera::ActiveState) {
m_camera->stop();
}
m_camera->start();
}
void CameraApp::error(QCamera::Error e) {
switch (e) {
case QCamera::CameraError: {
QMessageBox::warning(this, "Camera error", "General camera error");
break;
}
case QCamera::NotReadyToCaptureError: {
QMessageBox::warning(this, "Camera error", "Camera not ready to capture image");
break;
}
case QCamera::InvalidRequestError: {
QMessageBox::warning(this, "Camera error", "Invalid request");
break;
}
case QCamera::ServiceMissingError: {
QMessageBox::warning(this, "Camera error", "Service missing");
break;
}
case QCamera::NotSupportedFeatureError: {
QMessageBox::warning(this, "Camera error", "Not supported feature");
break;
}
default:
break;
};
}
Classes
- QCamera
- QVideoWidget
Reference links
- Qt - cross-platform application and UI framework
- Qt Mobility API
- New Qt APIs Beta - Mobility Project
- SDK help
--skumar_rao 03:02, 28 March 2010 (UTC)

