window.open('http://www.qtcn.org/bbs/attachment/Mon_1604/17_166243_540721ef534129b.png?13');" style="max-width:700px;max-height:700px;" onload="if(is_ie6&&this.offsetWidth>700)this.width=700;" >照功能
/*********************************************mainwindow.h********************************************************/
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QCamera>
#include <QCameraViewfinder>
#include <QCameraImageCapture>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
private slots:
    void captureImage();    //捕捉画面图片
    void displayImage(int , QImage);  //显示图片
    void saveImage();   //保存图片
private:
    Ui::MainWindow *ui;
    QCamera *camera;    //声明一个摄像机类指针
    QCameraViewfinder *viewfinder;  //声明一个摄像机视图取景器
    QCameraImageCapture *imageCapture;  //声明一个
图像捕捉类
};
#endif // MAINWINDOW_H
/***********************************************************mainwindow.cpp*****************************************************/
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    camera = new QCamera(this);     //创建相机
    viewfinder = new QCameraViewfinder(this);   //创建视图取景器
    imageCapture = new QCameraImageCapture(camera); //创建图像捕捉器
    ui->verticalLayout->addWidget(viewfinder);  //向垂直布局中添加视图取景器部件
    ui->label_display->setScaledContents(true); //通过setScaledContents(bool)设置图片自适应标签label
    camera->setViewfinder(viewfinder);  //通过函数setViewfinder(QVideoWidget viewfinder)设置视图取景器
    camera->start();    //开启摄像头
    connect(imageCapture,SIGNAL(imageCaptured(int,QImage)),this,SLOT(displayImage(int,QImage)));
    connect(ui->Capture_Button,SIGNAL(clicked(bool)),this,SLOT(captureImage()));
    connect(ui->Save_Button,SIGNAL(clicked(bool)),this,SLOT(saveImage()));
    connect(ui->Exit_Button,SIGNAL(clicked(bool)),qApp,SLOT(quit()));
}
MainWindow::~MainWindow()
{
    delete ui;
}
//捕捉图片(拍照)
void MainWindow::captureImage()
{
    ui->statusBar->showMessage(tr("正在捕获图片"),5000);  //设置状态栏
显示的信息
    imageCapture->capture();    //通过捕捉函数capture()拍照
}
//显示捕捉到的图片
void MainWindow::displayImage(int ,QImage image)
 //为什么QImage image作为函数形参是可以实现拍照效果,而当QImage image不作为函数形参声明在函数体内时不可以实现拍照功能{
    ui->label_display->setPixmap(QPixmap::fromImage(image));    //通过函数setPixmap()将图片绑定到显示标签中
//    ui->label_2->setPixmap(QPixmap::fromImage(image));
    ui->statusBar->showMessage(tr("捕获成功"),5000);
    return ;
}
void MainWindow::saveImage()
{
    QString fileName = QFileDialog::getSaveFileName(this,tr("保存到文件"),QDir::homePath(),tr("jpeg格式
文件(*.jpg)"));
    if(fileName.isEmpty())
    {
        ui->statusBar->showMessage(tr("保存操作取消"),5000);
        return ;
    }
    const QPixmap *pixmap = ui->label_display->pixmap();
    if(pixmap)
    {
        pixmap->save(fileName);
        ui->statusBar->showMessage(tr("保存成功"),5000);
    }
}