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

基于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.mzph.cn/news/820847.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决npm run dev跑项目,发现node版本不匹配,怎么跑起来?【已解决】

首先问题点就是我们npm run dev 运行项目的时候发现出错&#xff0c;跑不起来&#xff0c;类型下面这种 这里的出错的原因在于我们的node版本跟项目的版本不匹配 解决办法 我这里的问题是我的版本是node14的&#xff0c;然后项目需要node20的&#xff0c;执行下面的就可以正…

Vue3(二):报错调试,vue3响应式原理、computed和watch,ref,props,接口

一、准备工作调试 跟着张天禹老师看前几集的时候可能会遇到如下问题&#xff1a; 1.下载插件&#xff1a;Vue Language Features (Volar)或者直接下载vue-offical 2.npm run serve时运行时出现错误&#xff1a;Error: vitejs/plugin-vue requires vue (&#xff1e;3.2.13) …

Linux系统(centos,redhat,龙芯,麒麟等)忘记密码,怎么重置密码

Linux系统&#xff08;centos,redhat,龙芯&#xff0c;麒麟等&#xff09;忘记密码&#xff0c;怎么重置密码&#xff0c;怎么设置新的密码 今天在操作服务器时&#xff0c;DBA忘记了人大金仓数据库的kingbase密码&#xff0c;他的密码试了好多遍&#xff0c;都不行。最后只能…

2024-04-16 问AI: 介绍一下卷积网络VGG

某AI罢工了&#xff0c;看来一个AI是不保险的。 看来AI也要高可用。 文心一言 没有成功&#xff0c;提问人数过多。 智谱清言 VGG&#xff08;Visual Geometry Group&#xff09;网络是由牛津大学的视觉几何组提出的一种深层卷积神经网络结构&#xff0c;它在2014年的ImageNe…

目标检测算法——YOLOV9——算法详解

一、主要贡献 深度网络输入数据在逐层进行特征提取和空间变换时&#xff0c;会丢失大量的信息。针对 信息丢失问题&#xff0c;研究问题如下&#xff1a; 1&#xff09;从可逆功能的角度对现有深度神经网络架构进行了理论分析&#xff0c;解释了许多过去难以解释的现象&#xf…

JavaScript基础:js介绍、变量、数据类型以及类型转换

目录 介绍 引入方式 内部方式 外部形式 注释和结束符 单行注释 多行注释 结束符 输入和输出 输出 输入 变量 声明 赋值 关键字 变量名命名规则 常量 数据类型 数值类型 字符串类型 布尔类型 undefined 类型转换 隐式转换 显式转换 Number ✨介绍 &a…

Module Federation微前端应用拆分后 - request请求优化、私有化request|分发拦截器

1. 背景及目的 1.1 需求背景 随着应用的拆分&#xff0c;目前子应用有12个&#xff0c;这些子应用都使用的是同一个request实例。 前端支持后端切流&#xff0c;增加多个拦截器用于灰度 经手动梳理&#xff1a; 目前所有应用中有26个在使用的拦截器&#xff0c; 其中用于灰…

imgcat 工具

如果经常在远程服务器或嵌入式设备中操作图片&#xff0c;要查看图片效果&#xff0c;就要先把图片dump到本地&#xff0c;比较麻烦。可以使用这个工具&#xff0c;直接在终端上显示。类似于这种效果。 imgcat 是一个终端工具&#xff0c;使用 iTerm2 内置的特性&#xff0c;允…

加强fou循环的坑

今天遇到了一个有趣的事情&#xff0c;使用加强fou循环操作list时&#xff0c;会报错并发操作异常。 直到看了编译类&#xff0c;才发现&#xff0c;加强fou循环其实就是通过迭代器操作&#xff1a; 这里就会出现一个问题&#xff0c;迭代器在取出值时&#xff0c;就回去检测这…

elementUi el-date-picker时间控件精确到时分秒

1.时间日期typedatetime <template><el-date-pickerv-model"time":picker-options"pickerOptions"ref"datetime"type"datetime":default-time"range":disabled"disabled"placeholder"请选择日期时…

Spring Boot 定时任务实现教程

前言 在实际开发过程中&#xff0c;我们经常需要处理一些周期性或定时执行的任务&#xff0c;如数据备份、报表生成、邮件发送等。Spring Boot通过集成Quartz或使用Spring自带的Scheduled注解可以方便地实现定时任务功能。本文将详细介绍如何在Spring Boot项目中使用Scheduled…

【数据结构】遍历二叉树(递归和非递归遍历的先序、中序和后序遍历、层次遍历法)

目录 【数据结构】遍历二叉树&#xff08;递归和非递归遍历的先序、中序和后序遍历、层次遍历法&#xff09;一、递归算法先&#xff08;根&#xff09;序的遍历算法中&#xff08;根&#xff09;序的遍历算法后&#xff08;根&#xff09;序的遍历算法 二、非递归算法层次遍历…

存储器管理

01.存储器的层次结构&#xff1a;计算机在执行指令时&#xff0c;几乎每条指令都会涉及对存储器的访问&#xff0c;因此要求计算机对存储器的访问速度能跟得上处理机的运行速度&#xff0c;在现代计算机系统中&#xff0c;都采用了多层结构的存储器。至少应该有三层&#xff1a…

【漏洞复现】浙大恩特客户资源管理系统 i0004_openFileByStream.jsp 任意文件读取漏洞

0x01 产品简介 浙大恩特客户资源管理系统是一款外贸管理软件&#xff0c;它提供了多种功能&#xff0c;包括客户档案管理、邮件管理、OA外贸办公管理系统、分管权限管理、联系跟进及提醒、业务检查管理、统计分析管理等。 0x02 漏洞概述 浙大恩特客户资源管理系统存在任意文件…

ENSP-旁挂式AC

提醒&#xff1a;如果AC不能成功上线AP&#xff0c;一般问题不会出在AC上&#xff0c;优先关注AC-AP线路上的二层或三层组网的三层交换机 拓扑图 管理VLAN&#xff1a;99 | 业务VLAN&#xff1a;100 注意点&#xff1a; 1.连接AP的接口需要打上pvid为管理vlan的标签 2.AC和…

通用视觉大模型调研

humanbench HumanBench: Towards General Human-centric Perception with Projector Assisted Pretraining&#xff1b;为了解决不同任务之间的conflict以及不同dataset之间的差异(相同任务)&#xff0c;提出PATH&#xff0c;backbone是所有任务共享、projector是任务级别共享…

一个开源的全自动视频生成软件MoneyPrinterTurbo

只需提供一个视频 主题 或 关键词 &#xff0c;就可以全自动生成视频文案、视频素材、视频字幕、视频背景音乐&#xff0c;然后合成一个高清的短视频。 一&#xff1a;功能特性 完整的 MVC架构&#xff0c;代码 结构清晰&#xff0c;易于维护&#xff0c;支持 API 和 Web界面…

【面试亮点】线上GC问题排查止损解决 (heap space OutOfMemory排查止损解决)

【面试亮点】线上GC问题排查&止损&解决(heap space OOM排查&止损&解决) 许多同学总和我抱怨说面试的时候没有线上实际排查解决gc问题的经验,我这里分享我团队的一次比较好的从 发现问题->及时止损->排查问题->修复问题->复盘 全流程的实践经验,希…

DOS命令第二篇

雷迪斯and the乡亲们 欢迎你们来到 奇幻的编程世界 一、echo命令 作用&#xff1a; 输出一个内容到终端 格式&#xff1a; echo 要输出的内容 案例&#xff1a; 直接输出一个“你好” 二、ping 概念&#xff1a; 在网络中通信的时候&#xff0c;主机之间进行通信依靠…

转行或者跳槽入职一家新公司,应该如何快速上手工作?

不管是干测试也好或者其它任何职业&#xff0c;没有谁会在一家公司待一辈子&#xff0c;转行不一定&#xff0c;但是跳槽是每一个打工人早晚都会面临的事情&#xff0c;今天就来跟大家聊聊这件事~ 入职一家新公司&#xff0c;你应该做什么可以最快速的上手工作&#xff1f; 这…