QZxing+qt 实现条形码二维码识别 二维码生成

由于项目需求使用,需要识别条形码和二维码以及生成二维码,最后选择使用QZxing开源库!

QZxing源码下载地址:https://github.com/ftylitak/qzxing

源码在手,怎么用自己说了算,如果是qt工程建议直接添加源码使用,工程里面有个pri直接包含到工程里面就可以直接使用了,还可以编译成dll供其他项目调用,我这边测试demo是直接用的源码

Qt使用很简单,创建一个空的工程,在pro里面添加一句就可以了

cpp 复制代码
QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = QZxing
TEMPLATE = app

DESTDIR = $${PWD}/bin

# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

CONFIG += c++11

SOURCES += \
        main.cpp \
        widget.cpp

HEADERS += \
        widget.h

FORMS += \
        widget.ui

include(qzxing-master/src/QZXing.pri)

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
cpp 复制代码
#include "widget.h"
#include "ui_widget.h"
#include "QZXing.h"
#include <QDebug>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
}

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

void Widget::on_pushButton_clicked()
{
    QImage img1("1.png");
    QImage img2("2.png");
    QImage img3("3.png");
    QImage img4("4.png");
    QImage img5("5.png");
    QImage img6("6.png");
    QImage img7("7.png");
    QImage img8("8.png");

    qDebug() << "1-->" << QZXing::instance()->decodeImage(img1);
    qDebug() << "2-->" << QZXing::instance()->decodeImage(img2);
    qDebug() << "3-->" << QZXing::instance()->decodeImage(img3);
    qDebug() << "4-->" << QZXing::instance()->decodeImage(img4);
    qDebug() << "5-->" << QZXing::instance()->decodeImage(img5);
    qDebug() << "6-->" << QZXing::instance()->decodeImage(img6);
    qDebug() << "7-->" << QZXing::instance()->decodeImage(img7);
    qDebug() << "8-->" << QZXing::instance()->decodeImage(img8);

    QImage qrImage = QZXing::encodeData(ui->lineEdit->text());
    if (!qrImage.isNull()) {
        // 将生成的二维码显示在界面上或保存为文件
        QPixmap pixmap = QPixmap::fromImage(qrImage);
        ui->label->setPixmap(pixmap);
        // display or save the QR code image
    } else {
        qDebug() << "Failed to generate QR code";
    }
}

使用就更简单了,导入头文件后,直接调用相关api就可以识别和生成条码二维码等:

测试的条形码二维码,是找了一个在线生码器直接生成的,条形码有很多种,需要根据QZxing readme里面有支持的条码类型,如果是其他类型的条形码失败会失败。

相关推荐
小短腿的代码世界3 分钟前
高性能订单路由与智能拆单算法:Qt在量化交易系统中的核心架构——毫秒级延迟下如何隐藏你的交易意图?
开发语言·qt·架构
油炸自行车4 分钟前
【bug】Qt 6 Q_NAMESPACE 跨 DLL 链接错误:LNK2019 无法解析 staticMetaObject
数据库·c++·qt·bug·link2019·q_namespace_exp·namespaceexport
阿正的梦工坊6 分钟前
【Rust】20-Rust 编译器架构与 MIR/LLVM 优化管线
开发语言·架构·rust
在放️7 分钟前
Python 爬虫 · XML、xpath 与 lxml 模块基础
开发语言·爬虫·python
我要打打代码8 分钟前
C# 扩展方法
开发语言·c#
JackSparrow4149 分钟前
彻底理解Java NIO(三)Java实现 I/O多路复用+Reactor模式及开源框架代码解读
java·c语言·开发语言·后端·nio·reactor模式
曹牧11 分钟前
Java:Xml中的大、小于
java·开发语言
zavoryn13 分钟前
Jackson 序列化踩坑:LocalDateTime、Long 精度丢失和 boolean isXxx 字段
java·开发语言·后端
曹牧13 分钟前
Java:XML转义
xml·java·开发语言
leo_yu_yty15 分钟前
Go语言分布式计算(并发Debug)
开发语言·笔记·后端·golang