QT-二维码生成器(中间头像显示)

  • 前言
  • 一、演示效果
  • 二、配置说明
  • 三、关键程序
    • 1.QRCode.cpp
    • 2.QRCode.h
  • 四、程序下载

前言

1、使用vs2017+qt5.13.2开发环境

2、生成二维码中间可以添加头像显示。

一、演示效果

二、配置说明


预处理内容:

_WINDOWS
UNICODE
_UNICODE
WIN32
_ENABLE_EXTENDED_ALIGNED_STORAGE
HAVE_CONFIG_H
QT_WIDGETS_LIB
QT_GUI_LIB
QT_CORE_LIB

三、关键程序

1.QRCode.cpp

#include "QRCode.h"
#include "QRcodeSrc/qrencode.h"
#include <QDebug>
#include <QPainter>
#include <QColor>
#include <QRectF>
#include <QImage>
#include <QFile>
#include <QPixmap>
QRCode::QRCode(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(slotBtnClicked()));}void QRCode::slotBtnClicked()
{QString str = ui.lineEdit->text();if (str.isEmpty())return;createQRcode(str, ui.label, QString(":/Resouce/logo.png"),0.2);
}void QRCode::createQRcodePrivate(QString strInput, QLabel* label)
{QRcode *qrcode;qrcode = QRcode_encodeString(strInput.toStdString().c_str(), 2, QR_ECLEVEL_Q, QR_MODE_8, 1);qint32 uLabelWidth = ui.label->width();qint32 uLabelHeight = ui.label->height();qint32 qrcode_width = qrcode->width > 0 ? qrcode->width : 1;double scale_x = (double)uLabelWidth / (double)qrcode_width;double scale_y = (double)uLabelHeight / (double)qrcode_width;QImage mainImage = QImage(uLabelWidth, uLabelHeight, QImage::Format_ARGB32);QPainter painter(&mainImage);QColor background(Qt::white);painter.setBrush(background);painter.setPen(Qt::NoPen);painter.drawRect(0, 0, uLabelWidth, uLabelHeight);QColor foreground(Qt::black);painter.setBrush(foreground);for (qint32 y = 0; y < qrcode_width; y++){for (qint32 x = 0; 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, 1);}}}QPixmap mainPixmap = QPixmap::fromImage(mainImage);if (label != nullptr){label->setPixmap(mainPixmap);label->setVisible(true);}}void QRCode::createQRcode(QString strInput, QLabel *label, QString logo, float scale)
{createQRcodePrivate(strInput, label);int nWidth = label->width();int nHeight = label->height();int nLogoWidth = nWidth * scale;int nLogoHeight = nHeight * scale;int nLogoX = (nWidth - nLogoWidth) / 2;int nLogoY = (nWidth - nLogoHeight) / 2;const QPixmap *pix = label->pixmap();QFile file(logo);file.open(QIODevice::ReadOnly);QImage image;if (file.isOpen()){QByteArray data = file.readAll();image = QImage::fromData(data);}QPixmap temppix = QPixmap::fromImage(image);QPixmap pix1 = temppix.scaled(QSize(nLogoWidth, nLogoHeight), Qt::KeepAspectRatio);QPixmap pix2(nWidth, nHeight);// 加个白色边框QPainter painter1(&pix1);painter1.setPen(QPen(Qt::white, 10));painter1.drawRoundRect(QRect(0, 0, nLogoWidth, nLogoHeight), 20,20);QPainter *painter = new QPainter(&pix2);QColor background(Qt::white);painter->setBrush(background);painter->setPen(Qt::NoPen);painter->drawRect(0, 0, nWidth, nHeight);QColor foreground(Qt::black);painter->setBrush(foreground);painter->drawPixmap(0, 0, nWidth, nHeight, *pix);painter->drawPixmap(nLogoX, nLogoY, nLogoWidth, nLogoHeight, pix1);label->setPixmap(pix2);delete painter;}

2.QRCode.h

#pragma once#include <QtWidgets/QMainWindow>
#include <QLabel>
#include "ui_QRCode.h"class QRCode : public QMainWindow
{Q_OBJECTpublic:QRCode(QWidget *parent = Q_NULLPTR);public:void createQRcode(QString strInput, QLabel *label, QString logo, float scale = 0.2);private:void createQRcodePrivate(QString strInput, QLabel *label);public slots:void slotBtnClicked();private:Ui::QRCodeClass ui;
};

四、程序下载

https://download.csdn.net/download/u013083044/87529124

QT-二维码生成器(中间头像显示)相关推荐

  1. 使用Qt制作二维码生成器

    使用Qt制作二维码生成器

  2. PyQt5实战之二维码生成器(一):基本界面设计

    前言 大家好,这里是Seon塞翁.本实战项目为构建一个桌面应用,功能是定制二维码,实现多种数据类型的嵌入,和二维码样式的多样化. 涉及知识点:基于 PyQt5 的界面构建和功能实现(包括标签.按钮.文 ...

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

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

  4. PyQt制作二维码生成器

    PyQt制作二维码生成器 一.Python图形化工具 如果用 Python 语言开发跨平台的图形界面的程序,主要有3种选择: Tkinter 基于Tk的Python库,这是Python官方采用的标准库 ...

  5. PyQt5实战之二维码生成器(二):控件功能实现

    前言 经过上一章,我们构建了二维码生成器的基本界面,本章将实现界面中各个控件的功能. 文章目录 一.工具箱的数据输入 二.颜色选项卡 三.图像选项卡 四.菜单栏 五.状态栏 六.回顾 \_\_init ...

  6. C#版二维码生成器附皮肤下载

    原文 C#版二维码生成器附皮肤下载 前言 本文所使用的二维码生成代码是谷歌开源的条形码图像处理库完成的,c#版的代码可去https://code.google.com/p/zxing/download ...

  7. 免费的艺术二维码生成器

    在生活中,大家经常可以看到各种设计精美的艺术二维码,二维码在我们生活中应用非常广泛,不管是各种账号的扫码登陆,餐厅的扫码点餐,还是何种的扫码付款等等,但是各种漂亮的二维码是怎么制作的呢?下面我就给大家 ...

  8. 微信小程序分享生成海报(自带二维码)+头像+昵称

    前言: 我的分享海报是弹框,可根据自己要求写成页面,原理都是一样的,背景图是前期测试的,效果是OK的,真机测试手机也是显示的. 效果图: wxml: <!-- 生成海报 --><vi ...

  9. 警惕新骗术:虚假二维码生成器盗取 4.6 万美元!

    作者 | Catalin Cimpanu 译者 | 火火酱 责编 | 徐威龙 出品 | 区块链大本营(blockchain_camp) 迄今为止,已有9个恶意二维码生成网站从用户那里窃取了4.6万美元 ...

  10. 微信小程序项目实例——二维码生成器

    微信小程序项目实例--二维码生成器 文章目录 微信小程序项目实例--二维码生成器 一.项目展示 二.项目核心代码 三.效果展示 文末 项目代码见文字底部,点赞关注有惊喜 一.项目展示 项目是一个简单实 ...

最新文章

  1. Oracle分析函数入门
  2. Linux创建线程时 内存分配的那些事
  3. 怎么从0开始学python_如何从零开始学python
  4. Java用Xom生成XML文档
  5. 2017-10-29—英语发音的一些技巧总结
  6. CSS3之Transition
  7. 贴一段Jenkins的自动发布脚本
  8. Linux中shell编程的for循环用法
  9. css样式float造成的浮动“塌陷”问题的解决办法
  10. php伪随机数 ctf,[GWCTF 2019]枯燥的抽奖
  11. js Google 翻译 Api
  12. 访问服务器ipmi(DHCP)接口
  13. 计算机科学与技术民办大学排名,计算机科学与技术专业排名:这95所大学实力很强,包括公办、民办和中外合办院校...
  14. 阿里云ACP普尔文考试注意事项
  15. 单片机学习笔记————为指针加上紧箍咒const,避免意外修改了只做输入接口的数据
  16. 分享电脑便捷妙招,电脑小白们快码住
  17. Ubuntu的man手册中英文切换
  18. 有关计算机专业的自荐信英文,计算机专业自荐信英文【最新】
  19. struts中文问题,文章集合
  20. S32K148之S32开发环境搭建

热门文章

  1. 航空业可作为风控的指标
  2. Spring Boot Admin 踩坑
  3. 【转】此版本之魔兽争霸3需要特定语言版本之windows 解决办法
  4. 腾讯云对象存储周期性清理文件
  5. Java ArrayList集合常用方法
  6. [转]论青楼女子与游戏策划的异同
  7. HDR projects 7—HDR图片渲染工具
  8. GIT 远程仓库更换ip,导致本地拉取代码报错:ssh: connect to host 192.xxx.0.xxx port 22: Connection timed out fatal: Coul
  9. 区块链中区块的构成详解
  10. 乐影音下载器(视频下载器) 官方主页