背景介绍
Libqrencode是一个快速、紧凑、开源、免费,并且非常好用的二维码编码库,由日本明治大学的教授 Kentaro Fukuchi 开发并维护。
Libqrencode的GitHub仓库
在QT中使用编译好的Libqrencode库
我已将Libqrencode库编好了,生成的库名为QRcode.lib,直接引用库和库的头文件即可。
头文件QtWidgetsApplication.h
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_QtWidgetsApplication.h"
class QtWidgetsApplication : public QMainWindow
{
Q_OBJECT
public:
QtWidgetsApplication(QWidget *parent = Q_NULLPTR);
private:
Ui::QtWidgetsApplication1Class ui;
void GenerateQRCode(QString data, int bulk, QImage &image);
};
源文件QtWidgetsApplication.cpp
#include "QtWidgetsApplication.h"
#include <qbitmap.h>
#include <qimage.h>
#include <qpainter.h>
#include <qtextcodec.h>
#include <qdebug.h>
//包含二维码库的头文件,这里设置的是项目目录的include目录下
#include "include/qrencode.h"
//引入lib目录下的QRcode.lib库
#pragma comment(lib, "lib/QRcode.lib")
QtWidgetsApplication::QtWidgetsApplication(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
QString encodeString = QStringLiteral("https://www.ceveryc.com");
QImage image;
GenerateQRCode(encodeString, 8, image);
QPixmap pixmap = QPixmap::fromImage(image);
ui.label->setPixmap(pixmap);
}
//bulk 要绘制的点的边长(正方形的边长)
void QtWidgetsApplication::GenerateQRCode(QString data, int bulk, QImage &image)
{
QRcode* qr = QRcode_encodeString(data.toUtf8(), 1, QR_ECLEVEL_Q, QR_MODE_8, 0);
int allBulk = (qr->width) * bulk;
image = QImage(allBulk, allBulk, QImage::Format_Mono);
QPainter painter(&image);
QColor fg("black");
QColor bg("white");
painter.setBrush(bg);
painter.setPen(Qt::NoPen);
painter.drawRect(0, 0, allBulk, allBulk);
painter.setBrush(fg);
for (int y = 0; y < qr->width; y++)
{
for (int x = 0; x < qr->width; x++)
{
if (qr->data[y * qr->width + x] & 1)
{
QRectF r(x * bulk, y * bulk, bulk, bulk);
painter.drawRects(&r, 1);
}
}
}
QRcode_free(qr);
}
以上就是对Libqrencode库的简单使用。