返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >Qt实现字符串生成二维码功能
  • 739
分享到

Qt实现字符串生成二维码功能

2024-04-02 19:04:59 739人浏览 薄情痞子
摘要

目录前言开发环境实现步骤资源包数据配置属性二维码操作总结前言 最近在整理开发项目中遇到的知识点,发现了一个特别有意思的功能:使用字符串生成二维码操作。 下面是实现的效果图 开发环境

前言

最近在整理开发项目中遇到的知识点,发现了一个特别有意思的功能:使用字符串生成二维码操作。

下面是实现的效果图

开发环境

WIN10环境 + VS2017 + Qt 5.14.2 64位开发环境

实现步骤

资源包数据

说实话我的开发环境还真是挺麻烦的~

想要使用Qt使用二维码功能,必须要外加 "qrencode"库。针对我目前用的环境使用cmake编译了一个dll库

编译出来的文件包含了两个:lib和src,如果跟我的开发环境不一致的,可以自行编译,也是很快的(我发现camke真是一个好工具呀~)

配置属性

1:头文件设置

2:静态库设置

说明:根据上述三张图片中红色区域部分进行设置。

大家可以发现我设置的时候都有一个相同点,全部使用了相对路径。

一般多个人在做规模庞大的项目时,都会采用相对路径,即使每个人将项目放到了不同磁盘,也不会发生数据读取的问题。

说到了这里,那么我就接着来说一些关于配置的题外话吧~希望对你有帮助哦!

题外话:既然如此,我们生成的exe也会放到一个单独的目录中,假设我们叫做bin文件

在VS中默认生成的exe会根据是debug或者release环境生成到对应的文件夹中。当前要将两个环境合并需要修改配置属性中的常规操作

最后,也需要在代码中设置,将exe的生成目录设置成当前路径,否则在程序中使用相对路径时,无法找到对应文件!

QString qExePath = QCoreApplication::applicationDirPath();
QDir::setCurrent(qExePath);

这两句话最好放到main.cpp中,让整个项目生效。

二维码操作

接下来便是我们的重头戏了,如何使用字符串生成二维码啦

1:创建QR操作类用于绘制QImage图形

定义类:QORCodeOperation

#include <QPainter>
#include <xstring>
class CQRCodeOperation
{
public:
    CQRCodeOperation();
    ~CQRCodeOperation();
    QImage GeneratedGraphics(std::string sData, QSize nsize); //生成图形
private:
    QPixmap m_imgIcon;
};

函数(GeneratedGraphics)

传入指定的字符串以及二维码的宽度高度,返回图形的QImage值。

一般情况下我们会将QIamge赋值到QLable上展示。

参数(m_imgIcon)

QPximap类型的成员变量,主要是绘制图形,在最开始的显示效果生可以看出二维码中间添加了一张图片,主要用于显示图片的。

2:生成二维码图形QImage

2.1:定义QImage对象存储生成内容

QImage image(nsize, QImage::FORMat_RGB32);
image.fill(QColor("#000000"));

QImage存储根据设置的nsize大小的宽度高度构造一幅图像,程序会自动根据图像格式对齐数据,使用32位RGB格式的图像(0xffrrggbb)

2.2:构造绘图指针

QPainter painter(&image);
if (!painter.isActive())
{
	return image;
}

构造QPainter绘制指针,一般当传入的QSize数据为0时,是无法进行后续操作的,也就是isActiva = false

2.3:根据字符串获取QRcode类实例

QRcode *qrCode = QRcode_encodeString(sData.c_str(), 1, QR_ECLEVEL_L, QR_MODE_8, 1);

2.4:设置点画刷以及背景画刷

QColor colorForPoint("#FFB6C1");
QColor colorForBackground("#ffffff");

painter.setBrush(colorForBackground);
painter.setPen(Qt::NoPen);
painter.drawRect(0, 0, image.width(), image.height());

painter.setBrush(colorForPoint);

2.5:绘制图形

const double &&s = (qrCode->width > 0) ? (qrCode->width) : (1);
const double &&aspect = image.width() / image.height();
const double &&scale = ((aspect > 1.0) ? image.height() : image.width()) / s;

for (int y = 0; y < s; ++y)
{
	const int &&yy = static_cast<int>(y * s);
	for (int x = 0; x < s; ++x)
	{
		const int &&xx = yy + x;
		const unsigned char &b = qrCode->data[xx];

		if (b & 0x01)
		{
			const double rx1 = x * scale, ry1 = y * scale;
			QRectF r(rx1, ry1, scale, scale);
			painter.drawRects(&r, 1);
		}
	}
}

这里为了偷懒再判断宽度值时采用了三目运算符操作。

2.6:释放QRcode指针

QRcode_free(qrCode);

2.7:添加二维码图形

其实我们在中间展示的图片比较小,直接覆盖到二维码上就可以了

painter.setRenderHint(QPainter::Antialiasing, true); //抗锯齿
int nLeft = (nsize.width() - 30) / 2;
int nTop = (nsize.height() - 30) / 2;
QRect rectPng(nLeft, nTop,30,30);
painter.drawPixmap(rectPng, m_imgIcon);

2.8:结束绘制

painter.end();

到这里具体的二维码绘制已经完成了,对外我们只需要返回存储绘制数据的QImage就可以了。

3:二维码函数调用

CQRCodeOperation dlg;
QImage img = dlg.GeneratedGraphics(sText, QSize(250, 250));
ui.labpng->setPixmap(QPixmap::fromImage(img));

总结

到这里字符串生成二维码功能就讲解完成了,难度不是很大,只要将环境配置成功就完成了一般的功能了,剩下的就是根据你的想法,想要如何展示了。

以上就是Qt实现字符串生成二维码功能的详细内容,更多关于Qt字符串生成二维码的资料请关注编程网其它相关文章!

--结束END--

本文标题: Qt实现字符串生成二维码功能

本文链接: https://lsjlt.com/news/163481.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Qt实现字符串生成二维码功能
    目录前言开发环境实现步骤资源包数据配置属性二维码操作总结前言 最近在整理开发项目中遇到的知识点,发现了一个特别有意思的功能:使用字符串生成二维码操作。 下面是实现的效果图 开发环境...
    99+
    2024-04-02
  • Qt如何实现字符串生成二维码功能
    这篇文章主要介绍Qt如何实现字符串生成二维码功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言最近在整理开发项目中遇到的知识点,发现了一个特别有意思的功能:使用字符串生成二维码操作。下面是实现的效果图开发环境WI...
    99+
    2023-06-29
  • Java中怎么实现生成二维码功能
    今天就跟大家聊聊有关Java中怎么实现生成二维码功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。maven依赖<!--生成二维码-->  <d...
    99+
    2023-06-15
  • 利用jquery包将字符串生成二维码图片
    将一个字符串(可以是中文,在生成二维码图片之前将中文转码)生成二维码图片,如果想要带log的二维码,可以在生成后的二维码中间部位自己添加一个小log,log图片不要太大,不然就扫描不...
    99+
    2022-11-15
    jquery包 字符串 生成二维码
  • Qt结合libqrencode生成二维码的实现示例
    目录0.前言1.编译 libqrencode2.Qt 中使用 libqrencode 0.前言 libqrencode 是一个生成二维码的 c 语言库,二维码的容量可达 7...
    99+
    2024-04-02
  • Android 中怎么实现点击生成二维码功能
    这期内容当中小编将会给大家带来有关Android 中怎么实现点击生成二维码功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。QRCodeUtil:package com.example.admi...
    99+
    2023-05-30
    android
  • Qt如何结合libqrencode生成二维码
    这篇文章主要介绍Qt如何结合libqrencode生成二维码,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!0.前言libqrencode 是一个生成二维码的 c 语言库,二维码的容量可达 7000 位或 4000 个...
    99+
    2023-06-26
  • 利用Android怎么实现一个二维码生成功能
    利用Android怎么实现一个二维码生成功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在project的build.gradle添加如下代码:allproj...
    99+
    2023-05-31
    android roi
  • 使用微信小程序实现二维码生成功能
    使用微信小程序实现二维码生成功能小程序的盛行使得开发者可以轻松地实现各种功能,而二维码生成功能正是其中之一。二维码作为快速传递信息的一种方式,被广泛应用于各种场景,如支付、活动推广等。在本篇文章中,我们将学习如何使用微信小程序实现二维码生成...
    99+
    2023-11-21
    微信小程序 二维码生成 实现功能
  • 二维码生成Java实现代码
    本文实例为大家分享了二维码生成Java实现代码,供大家参考,具体内容如下package com.yihaomen.barcode;import java.awt.BasicStroke;import java.awt.Graphics;im...
    99+
    2023-05-31
    java 二维码 ava
  • Android studio 实现生成二维码和扫描二维码
    效果图 build.gradle(:app)添加依赖 dependencies { implementation 'com.google.zxing:core:3.3.3' imple...
    99+
    2023-09-30
    android studio android ide
  • Go语言能否实现二维码实时生成?
    二维码已经成为了现代生活中的一个重要元素,它可以用于各种场景,比如商业活动、支付、身份验证等等。在这些场景中,实时生成二维码是非常有必要的。那么,Go语言能否实现二维码实时生成呢?本文将给出答案。 首先,我们需要了解一下什么是二维码。二维...
    99+
    2023-10-26
    二维码 实时 spring
  • Java Spring boot实现生成二维码
    目录一、引入springboot依赖:二、工具类代码:三、调用工具类生成二维码1、将链接生成二维码图片并保存到指定路径2、将链接生成二维码直接显示在页面3、将以get请求传参链接生成...
    99+
    2024-04-02
  • Android中的二维码生成与扫描功能
    0. 前言 今天这篇文章主要描述二维码的生成与扫描,使用目前流行的Zxing,为什么要讲二维码,因为二维码太普遍了,随便一个Android APP都会有二维码扫描。本篇旨在帮助...
    99+
    2022-06-06
    二维 二维码 Android
  • 二维码生成器:如何在Go语言中实现实时生成JavaScript二维码?
    二维码已经成为现代生活中不可或缺的一部分,它们被用于广告、宣传、票据、付款等各种场景。二维码的生成和解码已经得到了广泛的支持,因此,越来越多的人开始使用二维码来代替传统的条形码。 在本文中,我们将介绍如何在Go语言中实现实时生成JavaS...
    99+
    2023-11-06
    实时 javascript 二维码
  • Java中如何实现带同步功能的二维码生成器?
    二维码作为一种越来越流行的编码方式,被广泛应用于商业和个人领域。在Java中,我们可以通过使用第三方库来实现二维码的生成,例如zxing。但是,在一些特殊的场景下,我们需要实现一个带同步功能的二维码生成器,以保证多个线程同时生成二维码时不...
    99+
    2023-10-17
    函数 同步 二维码
  • 如何在Android应用中实现一个二维码生成功能
    本篇文章为大家展示了如何在Android应用中实现一个二维码生成功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Android 有自带的jar包可以生成二维码core-3.0.0.jar,其中的c...
    99+
    2023-05-31
    android roi
  • ASP 实时生成二维码?
    ASP 实时生成二维码? 二维码作为一种快捷方便的信息传递方式,已经在我们的生活中得到了广泛应用。而在网页设计中,我们经常需要将某些信息以二维码的形式展示在页面上,这时候就需要实时生成二维码。本篇文章将介绍如何使用 ASP 实时生成二维码。...
    99+
    2023-09-05
    实时 二维码 关键字
  • Flutter实现扫二维码功能
    本文实例为大家分享了Flutter实现扫二维码功能的具体代码,供大家参考,具体内容如下 首先在pubspec.yaml中添加: dependencies:   qrscan: ^0....
    99+
    2024-04-02
  • Android平台生成二维码并实现扫描 &amp; 识别功能
    1.二维码的前世今生 “二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信...
    99+
    2022-06-06
    生成二维码 二维 二维码 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作