基于Qt的二维码生成与识别

news/2025/2/11 22:30:37/

基于Qt的二维码生成与识别

一、获取QZxing开源库

1.通过封装的QZxing开源库生成和识别二维码,下载地址:GitCode - 开发者的代码家园icon-default.png?t=N7T8https://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 <QImage>
#include <QDebug>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"<<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"<<text;if(text.isEmpty()){qDebug()<<"text.isEmpty()"<<text.isEmpty();return;}qDebug()<<"text.isEmpty()********"<<text.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()<<img;ui->label->setPixmap(QPixmap::fromImage(img));
}//2点击按钮 获取多行文本内容生成二维码
void MainWindow::on_pushButton_3_clicked()
{//1.生成二维码QString text = ui->textEdit->toPlainText();qDebug()<<"text"<<text;if(text.isEmpty()){qDebug()<<"text.isEmpty()"<<text.isEmpty();return;}qDebug()<<"text.isEmpty()********"<<text.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()<<img;ui->label->setPixmap(QPixmap::fromImage(img));
}

四、Demo效果

1.单行文本:二维码生成与识别

2.多行文本:二维码生成与识别

参考:Qt实现二维码生成和识别_qt 识别二维码-CSDN博客


http://www.ppmy.cn/news/1421017.html

相关文章

C语言第五章之复合类型(struct)

复合类型 概述 有时我们需要将不同类型的数据组合成一个有机的整体&#xff0c;如&#xff1a;一个学生有学号/姓名/性别/年龄/地址等属性, 这时候可通过结构体实现 1. 结构体 struct 结构体(struct)可以理解为用户自定义的特殊的复合的“数据类型 变量的定义和初始化 定义…

mybatis分页实现总结

1.mybatis拦截器相关知识 1.作用 mybatis的拦截器是mybatis提供的一个拓展机制&#xff0c;允许用户在使用时根据各自的需求对sql执行的各个阶段进行干预。比较常见的如对执行的sql进行监控&#xff0c;排查sql的执行时间&#xff0c;对sql进行拦截拼接需要的场景&#xff0c…

MySQL命令分类与大纲

一、数据库管理 创建与删除数据库 CREATE DATABASE&#xff1a;创建新数据库DROP DATABASE&#xff1a;删除已存在的数据库ALTER DATABASE&#xff1a;修改数据库属性 切换与查看数据库 USE&#xff1a;选择当前工作数据库SHOW DATABASES&#xff1a;列出所有可用数据库 二、…

Android的.dex、.odex与.oat文件区别

Android的.dex、.odex与.oat文件区别 .dex与.odex、.oat有什么联系呢&#xff1f; 1、dex文件 在我们写Java代码的时候&#xff0c;生成的文件是.java文件。 对于PC上的java虚拟机&#xff08;JVM&#xff09;运行的是.class。 .java文件转成.class文件&#xff0c;需要jdk…

使用Python模仿文件行为

在Python中&#xff0c;你可以通过文件操作函数&#xff08;如open()函数&#xff09;以及模拟输入输出流的库&#xff08;如io模块&#xff09;来模拟文件行为。下面是一些示例&#xff0c;展示了如何使用这些工具在Python中模拟文件行为。 1、问题背景 在编写一个脚本时&…

代理模式介绍

代理模式&#xff08;Proxy Pattern&#xff09;是一种常用的设计模式&#xff0c;它属于结构型设计模式&#xff0c;用于为其他对象提供一个代理以控制对该对象的访问。在代理模式中&#xff0c;一个代理类代表一个真实主题&#xff08;也称为目标对象或被代理对象&#xff09…

电商技术揭秘九:搜索引擎中的SEO数据分析与效果评估

相关系列文章 电商技术揭秘一&#xff1a;电商架构设计与核心技术 电商技术揭秘二&#xff1a;电商平台推荐系统的实现与优化 电商技术揭秘三&#xff1a;电商平台的支付与结算系统 电商技术揭秘四&#xff1a;电商平台的物流管理系统 电商技术揭秘五&#xff1a;电商平台的个性…

贪吃蛇web小游戏

蛇的移动&#xff1a;通过定时器实现蛇的自动移动&#xff0c;并通过监听用户的键盘输入来改变蛇的移动方向。 食物的生成&#xff1a;随机在地图上生成食物&#xff0c;并在蛇吃到食物时更新得分和食物的位置。 墙和边界的碰撞判断&#xff1a; 监测蛇是否撞墙&#xff08;遍…