1.通过封装的QZxing开源库生成和识别二维码,下载地址:GitCode - 开发者的代码家园https://gitcode.com/mirrors/ftylitak/qzxing/tree/master。
2.下载解压后,使用Qt Creator xx(qt编程软件)打开src目录下的QZXing.pro文件并运行代码,在编译的debug路径下获取QZXing3.dll和libQZXing3.a库文件。
1.在.pro文件夹下添加库文件qzxing文件夹,存放QZXing3.dll和libQZXing3.a库文件2个。
2.添加头文件,可以直接拷贝到.pro同目录,即拷贝QZXing.h和QZXing_global.h。
3.在.pro文件中添加如下圈红的部分。
1.添加头文件:将QZXing.h和QZXing_global.h头文件条件到新建的程序中
2.UI界面设计
3.主程序设计代码--通过按钮触发信号槽进行演示,即创建3个按钮的.CPP程序文件,详见代码内容:
- //mainwindow.cpp文件
-
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
-
- #include
- #include
-
- MainWindow::MainWindow(QWidget *parent)
- : QMainWindow(parent)
- , ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- }
-
- MainWindow::~MainWindow()
- {
- delete ui;
- }
-
- //3点击按钮 识别二维码内容
- void MainWindow::on_pushButton_clicked()
- {
- //2.识别二维码
- QImage img;
- //QString path= qApp->applicationDirPath()+"//file.png";
-
- //第一个参数:标准文件对话框的父窗口;第二个参数:标准文件对话框的标题;第三个参数:指定默认的目录;第四个参数:文件过滤器
- //QString path = QFileDialog::getOpenFileName(this,"open file dialog","/","png files(*.png);;jpg files(*.jpg)");
- //img.load(path);
-
- img = ui->label->pixmap()->toImage();
-
- if(img.isNull())
- {
- qDebug()<<"图片为空";
- return;
- }
- qDebug()<<"图片不为空";
- QZXing decode;
- decode.setDecoder(QZXing::DecoderFormat_QR_CODE);
- decode.setSourceFilterType(QZXing::TryHarderBehaviour_ThoroughScanning|QZXing::TryHarderBehaviour_Rotate);
- decode.setSourceFilterType(QZXing::SourceFilter_ImageNormal);
- QString info = decode.decodeImage(img);
- qDebug()<<"info"<
- // ui->lineEdit_2->setText(info);
- ui->textEdit_2->setPlainText(info);
- }
-
- //1点击按钮 获取单行文本内容生成二维码
- void MainWindow::on_pushButton_2_clicked()
- {
- //1.生成二维码
- QString text = ui->lineEdit->text();
- qDebug()<<"text"<
- if(text.isEmpty())
- {
- qDebug()<<"text.isEmpty()"<
isEmpty(); - return;
- }
- qDebug()<<"text.isEmpty()********"<
isEmpty(); - QImage img = QZXing::encodeData(text
- ,QZXing::EncoderFormat::EncoderFormat_QR_CODE
- ,QSize(200,200)
- ,QZXing::EncodeErrorCorrectionLevel::EncodeErrorCorrectionLevel_H
- ,true
- ,false);
- //图片大小设置,与label大小适配
- //img = img.scaled(ui->label->width(), ui->label->height()); //图片适应label,有点变形,太丑
-
- qDebug()<
-
- ui->label->setPixmap(QPixmap::fromImage(img));
- }
-
-
- //2点击按钮 获取多行文本内容生成二维码
- void MainWindow::on_pushButton_3_clicked()
- {
- //1.生成二维码
- QString text = ui->textEdit->toPlainText();
- qDebug()<<"text"<
- if(text.isEmpty())
- {
- qDebug()<<"text.isEmpty()"<
isEmpty(); - return;
- }
- qDebug()<<"text.isEmpty()********"<
isEmpty(); - QImage img = QZXing::encodeData(text
- ,QZXing::EncoderFormat::EncoderFormat_QR_CODE
- ,QSize(200,200)
- ,QZXing::EncodeErrorCorrectionLevel::EncodeErrorCorrectionLevel_H
- ,true
- ,false);
- //图片大小设置,与label大小适配
- //img = img.scaled(ui->label->width(), ui->label->height()); //图片适应label,有点变形,太丑
-
-
-
相关阅读:
CCF CSP认证 历年题目自练Day26
yolo增加Inner-IoU,一文搞定(Inner-SIoU,Inner-WIoU,Inner-EIoU,Inner-MPDIoU)
技术管理进阶——如何设计并跟进不同层级同学的绩效
影响mysql数据的三个性能指标(TPS\QPS\IOPS)
新测试基准发布,最强开源Llama 3尴尬了
安服-windows&linux日志分析
整形数据和浮点型数据在内存中的存储差别
Jeecg-Boot 低代码开发平台之路(一) —— 开始从零学起
基于机器学习的搜索推荐系统
Selenium + Python自动化测试入门
-
原文地址:https://blog.csdn.net/jiangzubing520/article/details/137828350