×
Namespaces

Variants
Actions
(Difference between revisions)

如何用Qt完成录像功能

From Nokia Developer Wiki
Jump to: navigation, search
hamishwillee (Talk | contribs)
m (Hamishwillee - Bot update - Fix ArticleMetaData and links)
renlin (Talk | contribs)
(Renlin -)
Line 1: Line 1:
[[Category:Draft]][[Category:Qt]][[Category:Qt Mobility]][[Category:Multimedia]][[Category:Camera]][[Category:Imaging]][[Category:Lang-Chinese]][[Category:Symbian]][[Category:MeeGo Harmattan]]
+
[[Category:Qt]][[Category:Qt Mobility]][[Category:Multimedia]][[Category:Camera]][[Category:Imaging]][[Category:Lang-Chinese]][[Category:Symbian]][[Category:MeeGo Harmattan]][[Category:Code Examples]]
''Delete instructional text in italic''
+
 
+
{{Abstract|This article explains how to ... }} ''Replace the abstract text with a short paragraph (or sentence) describing what the topic covers.''
+
 
+
''Enter article metadata as described below. Note that this template can be placed anywhere in the article. Do not remove parameters that you do not use''
+
 
{{ArticleMetaData <!-- v1.2 -->
 
{{ArticleMetaData <!-- v1.2 -->
 
|sourcecode= [[Media:Camera.zip]]  
 
|sourcecode= [[Media:Camera.zip]]  
Line 178: Line 173:
  
 
''Add categories below. Remove Category:Draft when the page is complete or near complete''
 
''Add categories below. Remove Category:Draft when the page is complete or near complete''
[[Category:Code Examples]]
 

Revision as of 06:17, 11 July 2012

Article Metadata

代码示例
源文件: Media:Camera.zip

兼容于
平台:
Symbian

文章
liuting 在 25 Apr 2012 创建
最后由 renlin 在 11 Jul 2012 编辑

Contents

介绍

本文介绍如何使用Qt mobility 的 QCamera 和 QMediaRecorder 完成录像功能

代码实现

.h file

#ifndef DIALOG_H
#define DIALOG_H
 
#include <QDialog>
#include <QCamera>
#include <QCameraViewfinder>
#include <QMediaRecorder>
#include <QPushButton>
#include <QLabel>
 
namespace Ui {
class Dialog;
}
 
class Dialog : public QDialog
{
Q_OBJECT
 
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
 
public slots:
 
void recordVideo();
void changeDuration(qint64 seconds);
void pause();
void stop();
 
 
private:
Ui::Dialog *ui;
 
QCamera* camera;
QCameraViewfinder* viewfinder;
QMediaRecorder* mediaRecorder;
 
 
QPushButton* recordButton ;
QPushButton* pauseButton ;
QPushButton* stopButton;
QPushButton* exitButton;
QLabel* timeDisplay;
};
 
#endif // DIALOG_H

.cpp file

#include "dialog.h"
#include "ui_dialog.h"
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QPushButton>
 
 
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
// ui->setupUi(this);
 
QByteArray cameraDevice = QCamera::availableDevices()[0];
camera = new QCamera(cameraDevice);
 
QHBoxLayout* layout = new QHBoxLayout;
viewfinder = new QCameraViewfinder(this);
 
QVBoxLayout* vLayout = new QVBoxLayout ;
recordButton = new QPushButton("record", this);
pauseButton = new QPushButton("pause", this);
stopButton = new QPushButton("stop", this);
exitButton = new QPushButton("exit", this);
timeDisplay = new QLabel(this);
vLayout->addWidget(recordButton);
vLayout->addWidget(pauseButton);
vLayout->addWidget(stopButton);
vLayout->addWidget(timeDisplay);
vLayout->addWidget(exitButton);
 
connect(recordButton, SIGNAL(clicked()), this, SLOT(recordVideo()));
connect(pauseButton,SIGNAL(clicked()),this, SLOT(pause()));
connect(stopButton,SIGNAL(clicked()), this,SLOT(stop()));
connect(exitButton,SIGNAL(clicked()), this, SLOT(close()));
 
layout->addWidget(viewfinder);
layout->addLayout(vLayout);
 
camera->setViewfinder(viewfinder);
camera->setCaptureMode(QCamera::CaptureVideo);
camera->start();
 
mediaRecorder = new QMediaRecorder(camera);
connect(mediaRecorder, SIGNAL(durationChanged(qint64)), this, SLOT(changeDuration(qint64)));
 
setLayout(layout);
}
 
Dialog::~Dialog()
{
delete mediaRecorder;
delete camera;
 
}
 
void Dialog:: recordVideo()
{
qDebug() << "record video";
mediaRecorder->record();
//QString str = QString("Recorded %1 sec").arg(mediaRecorder->duration());
//timeLabel->setText(str);
 
}
 
void Dialog:: changeDuration(qint64 seconds)
{
qDebug() << seconds;
//QString str = QString("Recorded %1 sec").arg(seconds);
timeDisplay->setNum(int(seconds));
}
 
void Dialog::pause()
 
{
qDebug() << "pause";
mediaRecorder->pause();
}
 
void Dialog::stop()
{
mediaRecorder->stop();
}

代码下载

File:Camera.zip


相关链接

Add categories below. Remove Category:Draft when the page is complete or near complete

126 page views in the last 30 days.