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,有点变形,太丑
-
-
-
相关阅读:
JavaWeb之异常处理
一文搞清各种来源的wmts服务加载,告别ctrl+c,v
替代 Redis 的开源项目「GitHub 热点速览」
双向交错CCM图腾柱无桥单相PFC学习仿真与实现(4)一些优化总结
字符串的算法题目
<Babel> 前端语言的巴别塔
Lecture 14 IO System(IO系统)
华为鸿蒙4谷歌GMS安装教学
Codeforces Round #836 (Div. 2) A.B.C.D
“蔚来杯“2022牛客暑期多校训练营1,签到题GADI
-
原文地址:https://blog.csdn.net/jiangzubing520/article/details/137828350