如何用Qt完成录像功能
hamishwillee
(Talk | contribs) m (Hamishwillee - Fix categories) |
hamishwillee
(Talk | contribs) m (Hamishwillee - Bot update - Fix ArticleMetaData and links) |
||
| Line 6: | Line 6: | ||
''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'' | ''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= | + | |sourcecode= [[Media:Camera.zip]] |
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) --> | |installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) --> | ||
|devices= <!-- Devices tested against - e.g. ''devices=Nokia 6131 NFC, Nokia C7-00'') --> | |devices= <!-- Devices tested against - e.g. ''devices=Nokia 6131 NFC, Nokia C7-00'') --> | ||
| Line 12: | Line 12: | ||
|platform= <!-- Compatible platforms - e.g. Symbian^1 and later, Qt 4.6 and later --> | |platform= <!-- Compatible platforms - e.g. Symbian^1 and later, Qt 4.6 and later --> | ||
|devicecompatability= <!-- Compatible devices e.g.: All* (must have internal GPS) --> | |devicecompatability= <!-- Compatible devices e.g.: All* (must have internal GPS) --> | ||
| − | |dependencies= <!-- Any other/external dependencies e.g.: Google Maps Api v1.0 --> | + | |dependencies= <!-- Any other/external dependencies e.g.: Google Maps Api v1.0 --> |
| − | |signing=<!-- Signing requirements - empty or one of: Self-Signed, DevCert, Manufacturer --> | + | |signing= <!-- Signing requirements - empty or one of: Self-Signed, DevCert, Manufacturer --> |
|capabilities= <!-- Capabilities required by the article/code example (e.g. Location, NetworkServices. --> | |capabilities= <!-- Capabilities required by the article/code example (e.g. Location, NetworkServices. --> | ||
|keywords= <!-- APIs, classes and methods (e.g. QSystemScreenSaver, QList, CBase --> | |keywords= <!-- APIs, classes and methods (e.g. QSystemScreenSaver, QList, CBase --> | ||
| − | |language= | + | |language= Lang-Chinese |
|translated-by= <!-- [[User:XXXX]] --> | |translated-by= <!-- [[User:XXXX]] --> | ||
| − | |translated-from-title= <!-- Title only --> | + | |translated-from-title= <!-- Title only --> |
|translated-from-id= <!-- Id of translated revision --> | |translated-from-id= <!-- Id of translated revision --> | ||
| − | |review-by=<!-- After re-review: [[User:username]] --> | + | |review-by= <!-- After re-review: [[User:username]] --> |
|review-timestamp= <!-- After re-review: YYYYMMDD --> | |review-timestamp= <!-- After re-review: YYYYMMDD --> | ||
|update-by= <!-- After significant update: [[User:username]]--> | |update-by= <!-- After significant update: [[User:username]]--> | ||
|update-timestamp= <!-- After significant update: YYYYMMDD --> | |update-timestamp= <!-- After significant update: YYYYMMDD --> | ||
| − | |creationdate= | + | |creationdate= 20120425 |
| − | |author= | + | |author= [[User:Liuting]] |
}} | }} | ||
| Line 174: | Line 174: | ||
== 相关链接 == | == 相关链接 == | ||
| − | *[[Qt | + | *[[Portal:Qt (Chinese)]] |
*[[多媒体开发]] | *[[多媒体开发]] | ||
''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 04:46, 11 July 2012
Delete instructional text in italic
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
文章信息
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();
}
代码下载
相关链接
Add categories below. Remove Category:Draft when the page is complete or near complete

