Qt实现二维码生成和识别

一、简介

QZxing开源库: 生成和识别条码和二维码

下载地址:https://gitcode.com/mirrors/ftylitak/qzxing/tree/master

二、编译与使用

1.下载并解压,解压之后如图所示
2.编译

打开src目录下的QZXing.pro,选择合适的编译器进行编译
最后生成库libQZXing3.a和QZXing3.dll 库

三、编写demo测试二维码生成和识别

除了上述两个库,还需要源码中的两个头文件
1、在pro包含库和头文件

c 复制代码
INCLUDEPATH +=$$PWD/qzxing/include
LIBS +=$$PWD/qzxing/libQZXing3.a

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

2、生成二维码程序

cpp 复制代码
QString text = ui->lineEdit->text();
    if(text.isEmpty())
        return;
    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,有点变形,太丑

    ui->label->setPixmap(QPixmap::fromImage(img));

3、识别二维码

cpp 复制代码
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;
    }
    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->lineEdit_2->setText(info);

4、注意事项

一定要将QZXing3.dll放在和exe同意目录,否则会出现编译通过,无法运行的问题

相关推荐
maineKit1 小时前
VS Code 搭建 Qt 6 开发环境保姆级教程:CMake / qmake、MSVC / MinGW 四种组合全覆盖
qt
ai安歌3 小时前
鸿蒙PC:Qt适配OpenHarmony实战【取色间】:RGB 滑动调整、HEX 展示和颜色预览
qt·华为·harmonyos
我在人间贩卖青春4 小时前
重学Qt——数据库
qt
sycmancia5 小时前
Qt——发送自定义事件
开发语言·qt
ai安歌7 小时前
鸿蒙PC:Qt适配OpenHarmony实战【人名录】:单机联系人卡片,不读系统通讯录也能演示详情联动
数据库·qt·harmonyos
丁劲犇7 小时前
使用TraeAI开发Web页面测试MSYS2 ucrt64 Qt MCP服务器
服务器·前端·c++·qt·mcp
CodeKwang7 小时前
Qt6.5数控加工CAM框架实战:基于工厂模式与分层架构的CamCore完整实现
qt·框架·工业软件·cam
我在人间贩卖青春8 小时前
重学Qt——自定义库
qt
小燚~8 小时前
MSVCR100.dII报错问题处理
c++·windows·qt
lqj_本人8 小时前
鸿蒙PC:Qt适配OpenHarmony实战【花账】:从一笔支出开始,做一个本地记账小应用
数据库·qt·harmonyos