- 工程文件:untitled2.pro,建立Mainwindow就可以了,不需要修改
#------------------------------------------------- # # Project created by QtCreator 2018-08-24T13:32:36 # #------------------------------------------------- QT += core gui QT +=multimedia QT +=multimediawidgets greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = untitled2 TEMPLATE = app SOURCES += main.cpp\ mainwindow.cpp HEADERS += mainwindow.h FORMS += mainwindow.ui
- 头文件:mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QCamera> #include <QCameraViewfinder> #include <QCameraImageCapture> #include <QFileDialog> namespace Ui { class MainWindow; } class QCamera; class QCameraViewfinder; class QCameraImageCapture; 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" 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->ImageView->addWidget(viewfinder); ui->ImageCapture->setScaledContents(true); camera->setViewfinder(viewfinder); camera->start(); connect(imageCapture, SIGNAL(imageCaptured(int,QImage)), this, SLOT(displayImage(int,QImage))); connect(ui->buttonCapture, SIGNAL(clicked()), this, SLOT(captureImage())); connect(ui->buttonSave, SIGNAL(clicked()), this, SLOT(saveImage())); connect(ui->buttonQuit, SIGNAL(clicked()), qApp, SLOT(quit())); } MainWindow::~MainWindow() { delete ui; } void MainWindow::captureImage() { ui->statusBar->showMessage(tr("capturing..."), 1000); imageCapture->capture(); } void MainWindow::displayImage(int , QImage image) { ui->ImageCapture->setPixmap(QPixmap::fromImage(image)); ui->statusBar->showMessage(tr("capture OK!"), 5000); } void MainWindow::saveImage() { QString fileName=QFileDialog::getSaveFileName(this, tr("save file"), "G:\\F\\image02\\a.jpg", tr("jpegfile(*.jpg)")); if(fileName.isEmpty()) { ui->statusBar->showMessage(tr("save cancel"), 5000); return; } const QPixmap* pixmap=ui->ImageCapture->pixmap(); if(pixmap) { pixmap->save(fileName); ui->statusBar->showMessage(tr("save OK"), 5000); } }
4.界面文件:在左边的部件中找到相应的部件拖放到窗口,并对其部件进行相应的全名。
Window使用Qt实现拍照并保存图片
最新推荐文章于 2023-03-31 11:14:59 发布