自学内容网 自学内容网

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)!