1.简介
QZXing是一个基于Qt框架的二维码解码库,它是对ZXing(Zebra Crossing)开源项目的一个Qt封装。ZXing是一个功能强大的开源二维码解码库,支持多种类型的码,包括QR码、DataMatrix码、Aztec码等。 QZXing提供了一个Qt插件,可以方便地在Qt应用程序中使用二维码解码功能。它可以在不同版本的Qt上运行,并提供了几种使用方式,包括直接解码图像、解码文件、解码摄像头捕获的图像等。使用QZXing可以轻松地将二维码解码功能集成到Qt应用程序中,实现扫描和解析二维码的功能。
zxing 是一个开源的一维/二维条码图像处理库,目前的版本为 Java 语言开发
链接地址:https://github.com/zxing/zxing
QZXing的下载地址:https://github.com/ftylitak/qzx
QZXing支持以下类型的条形码解码:
- UPC-A
 - UPC-E
 - EAN-8
 - EAN-13
 - ITF
 - Code 39
 - Code 93
 - Code 128 (GS1)
 - Codabar
 - QR Code
 - Data Matrix
 - Aztec (beta)
 - PDF 417
 
支持以下类型的编码:
- QR Code
 
2.编译
下载并解压,解压之后如图所示

编译:用qtcreator打开打开src里面的QZXing.pro文件。
直接编译,生成库文件,这里我使用的MinGW的编译器。

3.配置
配置: 新建thirdPart目录,新建测试工程目录QzxingTest。

进入到thirdPart目录下,创建qzxing目录,如下图所示,将编译好的库拷贝到如下图所示目录中,

将源码目录下QZXing.h、QZXing_global.h文件,拷贝到include目录下。
 
在QzxingTest工程的pro文件中,添加如下代码。
QMAKE_LIBDIR += $$PWD/../thirdPart/qzxing/
INCLUDEPATH += $$PWD/../thirdPart/qzxing/include
LIBS += -lQZXing3 
4.示例
二维码识别和编码

decode代码:
void MainWindow::on_btnDecode_clicked()
{
    QImage imageToDecode("F:/private/QzxingTest/qr_wechat.png");
    QZXing decoder;
        //mandatory settings
    decoder.setDecoder( QZXing::DecoderFormat_QR_CODE | QZXing::DecoderFormat_EAN_13 );
    //optional settings
    //decoder.setSourceFilterType(QZXing::SourceFilter_ImageNormal | QZXing::SourceFilter_ImageInverted);
    decoder.setSourceFilterType(QZXing::SourceFilter_ImageNormal);
    decoder.setTryHarderBehaviour(QZXing::TryHarderBehaviour_ThoroughScanning | QZXing::TryHarderBehaviour_Rotate);
    //trigger decode
    QString result = decoder.decodeImage(imageToDecode);
    ui->textEditOut->setText(result);
}
 
encode代码:
    QString text = ui->textEditIn->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->labelOut->setPixmap(QPixmap::fromImage(img)); 
要使用encode功能,需要pro文件加上宏定义:
DEFINES += QT_DEPRECATED_WARNINGS \
            ENABLE_ENCODER_GENERIC 
5.相关推荐
Qt 使用QtXlsx操作Excel表_qtxlsxwriter-CSDN博客
Qt 使用Quazip解压缩、压缩文件-CSDN博客
QCustomplot详解_qcustomplot中rescαlerαxis的作用_Mr.codeee的博客-CSDN博客



















