VS+QT——二维码生成(使用nayuki第三方库):从建工程开始

本文总结一下最近实现的小软件,二维码生成器。通过nayuki第三方库,生成一个QImage类型的二维码,再将二维码显示到对应控件上。本文参考博客:SorelCheung :Qt生成二维码

附代码:https://download.youkuaiyun.com/download/qq_28662831/11212049

先来看看实现后的效果:在文本框内输入二维码扫码内容,点击生成按钮,就可以生成对应二维码!


下面,正式开始实现这个软件。

一、建立一个普通的GUI工程

二、功能实现

  • 界面:

  • 1.  放置控件,并简单布局:
  • 代码:

  • 1.  TestForQRCode.h文件
#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_TestForQRCode.h"

#include <QImage>
#include <QDebug>
#include "QrCode.hpp"


class TestForQRCode : public QMainWindow
{
	Q_OBJECT

public:
	TestForQRCode(QWidget *parent = Q_NULLPTR);

	//QString asciiQR(const QString& data, QString on = "█", QString off = " ");

public:
	void GenerateAndShowQRCodeImage();

private:
	Ui::TestForQRCodeClass ui;

public slots:
	void button_Clicked();
};
  • 2.  TestForQRCode.cpp文件
#include "TestForQRCode.h"
#include <iostream>
#include <string>
#include <cmath>
using namespace std;


TestForQRCode::TestForQRCode(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
	
	setWindowTitle(QStringLiteral("二维码生成器"));
}

void TestForQRCode::GenerateAndShowQRCodeImage()
{
	QString data = ui.textEdit->toPlainText();

	qrcodegen::QrCode qr = qrcodegen::QrCode::encodeText(data.toUtf8().constData(), qrcodegen::QrCode::Ecc::LOW);
	const int s = qr.getSize() > 0 ? qr.getSize() : 1;//大小由data而定

	QImage image(s, s, QImage::Format_RGB888);//局部变量,匿名对象扶正,用匿名对象去初始化,而不是赋值(=)。
	image.fill(QColor(Qt::white).rgb());

	for (int y = 0; y < s; y++) {
		for (int x = 0; x < s; x++) {
			/*
			bool getModule(int x, int y)
			返回给定坐标下模块(像素)的颜色,白色为false,黑色为true。左上角有坐标(x=0, y=0)。如果给定的坐标超出界限,则返回false(白色)。
			*/
			const int color = qr.getModule(x, y); // 0 for white, 1 for black
			if (0 != color) 
			{
				image.setPixelColor(x, y, QColor(Qt::black));
			}
		}
	}

	//显示图片
	ui.qrCodeLabel->setScaledContents(true);
	QSize resize = ui.qrCodeLabel->rect().size();
	ui.qrCodeLabel->setPixmap(QPixmap::fromImage(image).scaled(resize));
}

void TestForQRCode::button_Clicked()
{
	GenerateAndShowQRCodeImage();
}

三、总结:

实现了二维码的生成与显示功能。

注意:本文代码有参考别人的博客,但是,解决问题的方法是自己写的。转载请说明出处。尊重劳动成果!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Video Decoder丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值