main函数
#include "mainwindow.h"
#include <QApplication>
#include <QTextCodec>
#include <Windows.h>
using namespace std;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//编码格式:设备端不一定能识别GBK,一劳永逸(UTF-8)
QTextCodec * codec = QTextCodec::codecForName("GBK");
QTextCodec::setCodecForLocale(codec);
//调试窗口
AllocConsole();
freopen("CONOUT$","w",stdout);
//设置程序的CPU的处理优先级
SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS );
//主窗口
MainWindow w;
w.show();
return a.exec();
}
头文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QList>
#include <QCamera>
#include <QCameraInfo>
#include <QCameraImageCapture>
#include <QDateTime>
#include <QUrl>
#include <Windows.h>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_pushButton_ScanDevice_clicked();
void on_pushButton_ConnectDevice_clicked();
void on_pushButton_clicked();//截图
private:
Ui::MainWindow *ui;
private:
QCamera*m_Camera;
private:
QList<QCameraInfo>m_CameraList;
private:
QCameraImageCapture *m_CaptureImage; //截图
};
#endif // MAINWINDOW_H
源文件
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_Camera=NULL;
m_CameraList.clear();
m_CaptureImage=NULL;; //抓图
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_ScanDevice_clicked()
{
ui->comboBox->clear();
m_CameraList = QCameraInfo::availableCameras();
for (int i = 0; i<m_CameraList.size() ;i++ ) {
QString devName = m_CameraList.at(i).description();
ui->comboBox->addItem(devName);
}
}
void MainWindow::on_pushButton_ConnectDevice_clicked()
{
m_Camera = new QCamera(m_CameraList.at(ui->comboBox->currentIndex()),this);
m_Camera->setViewfinder(ui->widget);
m_CaptureImage = new QCameraImageCapture(m_Camera);
m_Camera->start();
}
void MainWindow::on_pushButton_clicked()
{
QString filePath = QString("C:/Users/38912/Desktop/");
QString fileName =QDateTime::currentDateTime().toString("yyyy_MM_dd_HH_mm_ss");
QString fileSuffic= QString(".jpg");
QString fileInfo = filePath+fileName+fileSuffic;
m_Camera->setCaptureMode(QCamera::CaptureStillImage);
int ret = m_CaptureImage->capture(fileInfo);
}
ui文件
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>602</width>
<height>442</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QWidget" name="widget_2" native="true">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="pushButton_ScanDevice">
<property name="text">
<string>扫描设备</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_ConnectDevice">
<property name="text">
<string>连接设备</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="widget_3" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>截图</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QVideoWidget" name="widget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>602</width>
<height>23</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<customwidgets>
<customwidget>
<class>QVideoWidget</class>
<extends>QWidget</extends>
<header location="global">qvideowidget.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>