文章目录
一、前言
二维码生成工具需要用到第三方QRencode库,我这里是VS2017+QT插件的开发环境。下面主要是介绍如何编译和使用QRencode库。
二、如何编译QRencode库
这里需要下载QRencode库源码和Cmake编译工具。
1. 下载QRencode库源码
下载地址:https://fukuchi.org/works/qrencode/
2. 下载Cmake编译工具并安装
下载地址:https://cmake.org/download/
安装成功后将设置系统环境变量,添加CMake工具路径。设置后在Windows命令行输入:cmake --version
,成功会显示当前版本。
3. 编译QRencode库
-
解压qrencode-4.0.2.tar.gz,使用cmd命令打开命令行,进入该目录,使用以下cmake命令来生成解决方案:
cmake . -DGETOPT_INCLUDE_DIR="库的头文件所在目录" -DGETOPT_LIBRARIES="库文件所在目录"
注:-D代表定义变量,用法:-D变量名=变量值。
因为该库的示例代码使用了libpng库生成二维码图片,而libpng库又依赖zlib库,所以你需要下载libpng和zlib -
不链接libpng和zlib,则直接使用命令:
cmake . -DGETOPT_INCLUDE_DIR="" -DGETOPT_LIBRARIES=""
虽然也报了找不到png的错误,但不重要,这个时候该目录下已经生成了QRencode.sln解决方案。
为什么cmake命令要定义变量-DGETOPT_INCLUDE_DIR="" 和 -DGETOPT_LIBRARIES=""?
因为不定义GETOPT_INCLUDE_DIR和GETOPT_LIBRARIES会报找不到这两个变量的错误。 -
编译完成后,直接打开QRencode.sln解决方案
里面包含了5个项目,我们需要编译qrencode静态库工程:1: qrencode // qrencode是静态库工程,编译后生成qrencoded.lib库在Debug/Release目录下,使用该库的接口QRcode_encodeString就可以生成二维码信息。
2: qrenc // qrenc是.exe windows应用程序工程,并且用了png库,直接编译会报错找不到头文件。我这里是QT项目未使用该工程,只需要 qrencode静态库。
编译成功后,在路径qrencode-4.0.2\Release\qrencode.lib
会生成我们需要的静态库。
二、如何使用QRencode库
我这里是使用VS2017+QT插件的方式,加载qrencode.lib静态库,编写的Windows应用程序。
1. QrencodeTools源码介绍
- 在QrencodeTools构造函数调用
setString
方法,设置默认的二维码信息。setString("https://blog.csdn.net/ZHONGCAI0901/article/details/106983450");
- 使用
QRcode_encodeString
生成二维码信息。void QrencodeTools::setString(QString str) { string = str; if (qr != NULL) { QRcode_free(qr); } qr = QRcode_encodeString(string.toStdString().c_str(), 1, QR_ECLEVEL_L, QR_MODE_8, 1); update(); }
- 当点击Save Button时保存二维码图片
bool QrencodeTools::saveImage(QString fileName, int size) { if (size != 0 && !fileName.isEmpty()) { QImage image(size, size, QImage::Format_ARGB32); QPainter painter(&image); QColor background(Qt::white); painter.setBrush(background); painter.setPen(Qt::NoPen); painter.drawRect(0, 0, size, size); if (qr != NULL) { draw(painter, size, size); } // change background if (qrBtnGroup->checkedId() == QR_BKGD_ID_TRANSPARENT) { union myrgb { uint rgba; uchar rgba_bits[4]; }; myrgb* mybits = (myrgb*)image.bits(); int len = image.width()*image.height(); while (len-- > 0) { mybits->rgba_bits[3] = (mybits->rgba == 0xFFFFFFFF) ? 0 : 255; mybits++; } } return image.save(fileName); } else { return false; } }
2. QrencodeTools应用程序
-
QrencodeTools功能
1:背景设置 // 设置生成二维码的背景颜色为:白色、透明
2:输入框 // 输入需要生成二维码的信息
3:Show // 在QrencodeTools显示二维码图片
4:Save // 保存二维码图片
三、QrencodeTools相关的开发资料
-
QrencodeTools的资料
1:cmake-3.18.0-rc2-win64-x64.msi // 编译qrencode-4.0.2.tar.gz工具
2:qrencode-4.0.2.tar.gz // libqrencode源码
3:QrencodeLib.rar // 我编译生成的libqrencode静态库
4:QrencodeTools.exe // 使用QT加载libqrencode静态库生成二维码的Windows应用程序
5:QrencodeTools.rar // QrencodeTools.exe应用程序的源码(开发环境VS2017+QT插件)
下载地址: https://download.csdn.net/download/ZHONGCAI0901/12555893 -
参考资料
1:qrencode二维码生成在linux下的编译:
https://www.it610.com/article/4863607.htm
2:QRencode库编译系列之qrencode编译:
https://blog.csdn.net/fxbjye/article/details/78961390
3:Qt生成二维码
https://www.cnblogs.com/grebamboo/p/12743373.html
4:二维码生成工具qrencode的arm-linux移植:
https://blog.csdn.net/qq_40933044/article/details/89228320
5:C/C++二维码生成库qrencode的使用:
https://blog.csdn.net/wpz25074529/article/details/80846859