Qt笔记(四十二)之QZXing的编译 配置 使用

104 篇文章 121 订阅

完整的运行截图可以楼主知乎看,CSDN判定带有二维码的为违规
https://zhuanlan.zhihu.com/p/490532151

一.前言
楼主最近新接触了一个第三方库QZXing,这是一个用Qt封装的Zxing二维码解码库,楼主就初次简单使用该库做一个记录。

附:
zxing 是一个开源的一维/二维条码图像处理库,目前的版本为 Java 语言开发
链接地址:https://github.com/zxing/zxing

QZXing的下载地址:https://github.com/ftylitak/qzxing

二.编译与使用
1.下载并解压,解压之后如图所示
在这里插入图片描述
2.编译,
2.1用qtcreator打开打开src里面的pro文件
在这里插入图片描述
2.2根据需要选择对应的编译器,楼主这里选择的是minGw32,记得debug和release各来一次
在这里插入图片描述
2.3开始编译,时间有点长(只要不是错误,警告不用理)
在这里插入图片描述
在对应的文件夹找到QZXing3.dll 、libQZXing3.a
msvc编译器编译的就是QZXing3.dll QZXing3.lib
3.配置
3.1 将以下头文件放入工程目录下的include文件夹

在这里插入图片描述
在这里插入图片描述

3.2pro配置
在这里插入图片描述

INCLUDEPATH +=$$PWD/QZXingWidget/include
LIBS +=$$PWD/QZXingWidget/libQZXing3.a

# 使用生成二维码功能需要加这一句
DEFINES += ENABLE_ENCODER_GENERIC

4.编解码使用举例
备注:需要把QZXing3.dll 放到exe所在的目录下,不然就会出现程序可以编译通过,但是使用编解码的时候,程序闪退
4.1生成二维码

#include "QZXingWidget.h"
#include "ui_QZXingWidget.h"
#include "./include/QZXing.h"

QZXingWidget::QZXingWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::QZXingWidget)
{
    ui->setupUi(this);
    setWindowTitle(QStringLiteral("QZXing例子"));
}

QZXingWidget::~QZXingWidget()
{
    delete ui;
}

void QZXingWidget::on_pushButton_encode_clicked()
{
    QString text = ui->textEdit->toPlainText();
    if(text.isEmpty())
        return;
    QImage img = QZXing::encodeData(text
                                    ,QZXing::EncoderFormat::EncoderFormat_QR_CODE
                                    ,QSize(200,200)
                                    ,QZXing::EncodeErrorCorrectionLevel::EncodeErrorCorrectionLevel_H
                                    ,true
                                    ,false);
    ui->label->setPixmap(QPixmap::fromImage(img));
}

在这里插入图片描述
在这里插入图片描述
4.2解析二维码

void QZXingWidget::on_pushButton_decode_clicked()
{
    QImage img;
    QString path= qApp->applicationDirPath()+"//file.png";
    img.load(path);
    if(img.isNull())
    {
        qDebug()<<"图片为空";
        return;
    }
    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);
    ui->textEdit->setText(info);
}

在这里插入图片描述
三.其他
1.该文章只是简单实现了生成二维码与解析二维码的功能,了解还是属于比较浅的,不喜勿喷
2.附编译好的几个动态库,需要自取,目录如下
下载链接
在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值