QRcode.width表示有多少行、多少列
QRcode.data长度QRcode.width*QRcode.width,QRcode.data[n] & 0x01 == true表示这个点需要绘制。
vs2015编译好的QRencode静态库下载地址https://download.csdn.net/download/anyaini/11341399
QImage QREncode(char* szText)
{
//生成二维码
QRcode* pQRC = QRcode_encodeString(szText, 0, QR_ECLEVEL_M, QR_MODE_8, 1);
QImage img(400, 400, QImage::Format_RGB888);
img.fill(QColor(255, 255, 255));
int iQRBorder = 50; //边框大小
int iQRWidth = img.width() - iQRBorder * 2; //二维码所占区域
int n = pQRC->width; //二维码每一行的点数量
int iNodeSize = (iQRWidth) / (n);//每个点的宽度
QPainter pt(&img);
pt.setPen(QColor(0, 0, 0));
pt.setBrush(QColor(0, 0, 0));
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (pQRC->data[i*n + j] & 0x01)
{
pt.drawRect(i*iNodeSize + iQRBorder, j*iNodeSize + iQRBorder, iNodeSize, iNodeSize);
}
}
}
return img;
}