qt生成二维码

Posted xupeidong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt生成二维码相关的知识,希望对你有一定的参考价值。

到官网下载qrencode

http://fukuchi.org/works/qrencode/index.html.en
qrenc.c不用,这个是测试用的,把config.h.in文件改为config.h文件,把.h文件和.cpp文件导入,在整个项目的pro文件中加入
DEFINES +=HAVE_CONFIG_H
OTHER_FILES += qrcode/config.h.in
#include "qrcode/qrencode.h"
void MainWindow::GenerateQRcode(QString tempstr)
{
    QRcode *qrcode;
    qrcode=QRcode_encodeString(tempstr.toStdString().c_str(),2,QR_ECLEVEL_Q,QR_MODE_8,1);
    qint32 temp_width=ui->label->width();
    qint32 temp_height=ui->label->height();
    qDebug()<<"temp_width="<<temp_width<<";temp_height="<<temp_height;
    qint32 qrcode_width=qrcode->width>0?qrcode->width:1;
    double scale_x=(double)temp_width/(double)qrcode_width;
    double scale_y=(double)temp_height/(double)qrcode_width;
    QImage mainimg=QImage(temp_width,temp_height,QImage::Format_ARGB32);
    QPainter painter(&mainimg);
    QColor background(Qt::white);
    painter.setBrush(background);
    painter.setPen(Qt::NoPen);
    painter.drawRect(0,0,temp_width,temp_height);
    QColor foreground(Qt::black);
    painter.setBrush(foreground);
    for(qint32 y=0;y<qrcode_width;y++)
    {
        for(qint32 x=0;x<qrcode_width;x++)
        {
            unsigned char b=qrcode->data[y*qrcode_width+x];
            if(b &0x01)
            {
                QRectF r(x*scale_x,y*scale_y,scale_x,scale_y);
                painter.drawRects(&r,1);
            }
        }
    }

   QPixmap mainmap=QPixmap::fromImage(mainimg);

   QLabel *plabel = new QLabel();

   plabel->setPixmap(mainmap);
   plabel->setVisible(true);
}

 


以上是关于qt生成二维码的主要内容,如果未能解决你的问题,请参考以下文章

QT 实用代码片段

26.Qt Quick QML-RotationAnimationPathAnimationSmoothedAnimationBehaviorPauseAnimationSequential(代码片段

qt creator源码全方面分析(2-0)

Qt+QZXing编写识别二维码的程序

如何在原生 C/C++ 中使用 Qt 绘制二维码

如何在本机C ++中用QML绘制二维码[重复]