Qt如何将字串显示成二维码以供扫码识别
在Qt中可以使用QRcode来生成二维码,本质上说,其实是把一串信息生成二维码形式的图片。
首先介绍下QRcode,QRCode原本是一个用于生成二维码的 JavaScript 库,在Qt中大佬们将其改成C++语言实现。现直接放出来,使用的时候直接载入源码调用里边的接口即可。
QRcode源码包
有个QRcode源码,直接将其加载到代码中,按照如下调用方式来生成二维码图片即可。
QPixmap MainWindow::createQRCode(const QString &text)
{
int margin = 2;
if (text.length() == 0)
{
return QPixmap();
}
QRcode *qrcode = QRcode_encodeString(text.toLocal8Bit(), 2, QR_ECLEVEL_L, QR_MODE_8, 0);
if (qrcode == NULL) {
return QPixmap();
}
unsigned char *p, *q;
p = NULL;
q = NULL;
int x, y, bit;
int realwidth;
realwidth = qrcode->width;
QImage image = QImage(realwidth, realwidth, QImage::Format_Indexed8);
QRgb value;
value = qRgb(255, 255, 255);
image.setColor(0, value);
value = qRgb(0, 0, 0);
image.setColor(1, value);
image.setColor(2, value);
image.fill(0);
p = qrcode->data;
for (y = 0; y < qrcode->width; y++)
{
bit = 7;
q += margin / 8;
bit = 7 - (margin % 8);
for (x = 0; x < qrcode->width; x++)
{
if ((*p & 1) << bit)
image.setPixel(x, y, 1);
else
image.setPixel(x, y, 0);
bit--;
if (bit < 0)
{
q++;
bit = 7;
}
p++;
}
}
// 更改为对应的二维码区域的宽
return QPixmap::fromImage(image.scaledToWidth(300));
}
生成了二维码图片后,就是一个简单的图片展示,直接使用QLabel显示一个图片即可,在此不做赘述。
原文地址:https://blog.csdn.net/qianniulaoren/article/details/144430263
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!