qt生成二维码

时间:2023-03-08 23:56:10
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(),,QR_ECLEVEL_Q,QR_MODE_8,);
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>?qrcode->width:;
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(,,temp_width,temp_height);
QColor foreground(Qt::black);
painter.setBrush(foreground);
for(qint32 y=;y<qrcode_width;y++)
{
for(qint32 x=;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,);
}
}
} QPixmap mainmap=QPixmap::fromImage(mainimg); QLabel *plabel = new QLabel(); plabel->setPixmap(mainmap);
plabel->setVisible(true);
}