Qt 二维码
1.生成二维码
利用第三方库qrencode ,将qrencode源码添加到自己的程序中,直接调用使用.
参考http://blog.csdn.net/zhangxufei/article/details/52149892
1.qrencode-3.4.4文件夹复制到源代码下面,把*.h*.c文件加入到工程中。
2.在QT pro文件添加
DEFINES += HAVE_CONFIG_H
INCLUDEPATH += qrencode-3.4.4/
3.重新定义 MAJOR_VERSION、MICRO_VERSION、MINOR_VERSION、VERSION,重新定义的方法:找到#undef MAJOR_VERSION位置,在其下面定义#define MAJOR_VERSION 1,其他几个也这么定义;
需要到文件如下:


#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include "qrencode.h" #include <QPainter> MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
} MainWindow::~MainWindow()
{
delete ui;
} void MainWindow::on_pushButton_GenerateQRCode_clicked()
{ QString strCodeData=ui->lineEdit_CodeData->text(); QByteArray ba = strCodeData.toLocal8Bit();
char *codeData = ba.data();
generateQRcode(codeData); } void MainWindow::generateQRcode(const char* codeData)
{ //QR_ECLEVEL_Q 容错等级
QRcode * qrcode = QRcode_encodeString(codeData, , QR_ECLEVEL_Q, QR_MODE_8, ); qint32 tempWidth=ui->label->width(); //二维码图片的大小
qint32 tempHeight=ui->label->height();
qint32 qrcodeWidth = qrcode->width > ? qrcode->width : ;
double scaleX = (double)tempWidth / (double)qrcodeWidth; //二维码图片的缩放比例
double scaleY = (double) tempHeight /(double) qrcodeWidth; qDebug()<<"scale_x"<<scaleX; QImage mainImg=QImage(tempWidth,tempHeight,QImage::Format_ARGB32);
QPainter painter(&mainImg);
QColor background(Qt::white);
painter.setBrush(background);
painter.setPen(Qt::NoPen);
painter.drawRect(, , tempWidth, tempHeight); QColor foreground(Qt::black);
painter.setBrush(foreground);
for( qint32 y = ; y < qrcodeWidth; y ++)
{
for(qint32 x = ; x < qrcodeWidth; x++)
{
unsigned char b = qrcode->data[y * qrcodeWidth + x];
if(b & 0x01)
{
QRectF r(x * scaleX, y * scaleY, scaleX, scaleY);
painter.drawRects(&r, );
}
}
}
QPixmap codeImage=QPixmap::fromImage(mainImg);
ui->label->setPixmap(codeImage);
ui->label->setVisible(true); }
Qt 二维码的更多相关文章
- qt二维码示例
原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://blog.csdn.net/hiwubihe/article/details/38679621,qq:1269122125. 移动终 ...
- Qt之二维码扫描
简述 二维码(QR Code)是用某种特定的几何图形按一定规律在平面(二维方向)分布的黑白相间的图形记录数据符号信息的.是所有信息数据的一把钥匙.应用十分广泛,如:产品防伪/溯源.广告推送.网站链接. ...
- 我写的一个Qt 显示二维码( QR Code)的控件(可以去掉对 libpthread 的依赖,而且编译出的库文件可以在 vc2010 的release 模式下使用)
最近一个项目需要显示二维码,所以花了点时间(只用了一个晚上,写的很不完善),写了个显示二维码的控件.当然这个控件用到了些开源的代码,比如qrencode,所以我也打算把我的代码开源. 我的代码参考了 ...
- Qt+QZXing编写识别二维码的程序
本人最近在用Qt编写程序,需要用编写二维码识别功能.在网上搜寻一番,找到了QZXing.配置过程中确实出了一大把汗,这里我写这篇文章记录配置方法,替后人省一把汗吧!我的开发环境:MSVC2010 + ...
- Pyqt+QRcode 生成 识别 二维码
1.生成二维码 python生成二维码是件很简单的事,使用第三方库Python QRCode就可生成二维码,我用Pyqt给QRcode打个壳 一.python-qrcode介绍 python-qrco ...
- C++二维码相关库编译
一.瞎想 坐在地铁上闲来无聊,突然想到了二维码,顺手就百度了下相关的资料,目前C++二维码相关的库不多,也就zbar(开源中国上下了半天也没下载下来).zxing,不过这两个库据说都是解析二维码的,不 ...
- 如何用C代码生成二维码
如何用C代码生成二维码 当下因微信和支付宝等手机应用广泛使用,而基于二维码/一维条码的移动支付,也借助手机移动端席卷全国,使得越来越多的人知道有"二维码"这么一种东西. 对于普通用 ...
- jquery自动生成二维码
把下面的jquery代码放到想要在当前页面上面生成二维码: 代码如下: <script type="text/javascript">var _qrContent='' ...
- 如何使用 libqr 库生成二维码?
使用 libqr 库只需 4 步即可生成二维码 1.初始化 QRCode 结构体 QRCode *qrInit(int version, int mode, int eclevel, int mask ...
随机推荐
- weui tabbar 切换
Html: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <met ...
- 跟着《beginning jquery》学写slider插件并借助自定义事件改进它
<beginning jquery>是一本很不错的学习jquery的书,作者的讲解深入浅出,很适合初学者,在最后一章里面,作者把前面所有的点结合起来完成了一个轮播图的jquery插件.实现 ...
- javascript-- test() 匹配正则 与 逻辑运算符 “!”
在使用正则表达式验证"时分秒"的时候遇到了一个问题,因为业务需求,需要提供两个input 给用户输入开始时间和结束时间. js 代码: var regtime=/^([0-1]?[ ...
- 关于我-dinphy简介
别 名:孜_行 英文名:dinphy QQ交流群:588266650 兴趣爱好:听音乐.打篮球.热衷于诗词文学 专 业:计算机 了 解:windows及Linux.android的基本 ...
- pyMysql
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...
- 【BZOJ-3998】弦论 后缀自动机
3998: [TJOI2015]弦论 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 2018 Solved: 662[Submit][Status] ...
- ELKStack-使用消息队列扩展(十)
ELKStack-使用消息队列扩展 官方文档:https://www.elastic.co/guide/en/logstash/5.x/deploying-and-scaling.html 流程图 流 ...
- Struts2之开山篇
①Struts2是什么? Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图 ...
- C++构造函数2
一.构造函数分类 普通构造函数,复制(拷贝)构造函数,赋值构造函数, #include <iostream> using namespace std; class A { public: ...
- quantum sets
the principles of quantum mechanics by p.a.m.dirac.