七QT通过QR-Code生成二维码
原文来自https://blog.csdn.net/gengyuchao/article/details/86523463。
用的是github上的大佬Nayuki开源的二维码生成,地址https://github.com/nayuki/QR-Code-generator

用法很简单,在你的项目文件中添加QrCode.cpp和QrCode.hpp即可。

void BindQRCode::showQRCode()
{
// Manual operation
//参数为你想要生成的二维码内容
std::vector<QrSegment> segs =
QrSegment::makeSegments("hello world");
//原作者这么写的,不知道是干啥用的
QrCode qr1 = QrCode::encodeSegments(
segs, QrCode::Ecc::HIGH, 5, 5, 2, false);
//创建二维码画布
QImage QrCode_Image=QImage(qr1.getSize(),qr1.getSize(),QImage::Format_RGB888);
QrCode_Image.fill(Qt::transparent);
for (int y = 0; y < qr1.getSize(); y++) {
for (int x = 0; x < qr1.getSize(); x++) {
//getModule(x, y)会返回指定位置的颜色 false为白色,true为黑色
if(qr1.getModule(x, y))
QrCode_Image.setPixel(x,y,qRgb(0,0,0));
else
QrCode_Image.setPixel(x,y,qRgb(255,255,255));
}
}
//图像大小转换为适当的大小
QrCode_Image=QrCode_Image.scaled(ui->label_QR->width()-20, ui->label_QR->height()-20,
Qt::KeepAspectRatio);
//转换为QPixmap在Label中显示
ui->label_QR->setPixmap(QPixmap::fromImage(QrCode_Image));
ui->label_QR->setAlignment(Qt::AlignCenter);
}
浙公网安备 33010602011771号