qt二维码示例

移动终端的普及,二维码的使用越来越广泛,最近小小的研究了一下QT下二维码的使用。
二维码(Two-dimensional code),又称二维条码,它是用特定的几何图形按一定规律在平面(二维方向)上分布的黑白相间的图形,是所有信息数据的一把钥匙。在现代商业活动中,可实现的应用十分广泛,如:产品防伪/溯源、广告推送、网站链接、数据下载商品交易定位/导航电子凭证、车辆管理、信息传递、名片交流、wifi共享等。如今智能手机扫一扫(简称313)功能的应用使得二维码更加普遍。

QZXing:Qt包装ZXing的解码库。

网址:http://sourceforge.net/projects/qzxing.

更多参考:https://projects.developer.nokia.com/QZXing.  本文开发二维码的小工具采用的就是QZXing库。库的使用方法很简单,从上面网址上下载下来源代码,源代码根目录下有个pri文件,因为我是在VS2010中开发的,按道理是可以在VS工程中编译这包源码包的。但是编译总是失败。所以采用另外的方法,新建个QTcreator工程,在工程中把源码包拷贝进工程中,再在pro工程文件中加上include (QZXing/QZXing.pri)。编译即可生成dll文件。可能qtcreator采用的mingw编译器,编译生成的dll在msvc中不能静态加载。尝试了静态加载都是失败的,而采用QT自带的QLibrary加载DLL是成功的。

程序运行效果如下:

启动后

选择二维码图片后效果:

1.自定义一个窗体类QrCodeForm.h

typedef bool (*fpGetQrStr)(const char*, char*, int);

class CQrCodeForm : public UiBaseDialog

{

Q_OBJECT

public:

CQrCodeForm(QWidget *parent = 0);

~CQrCodeForm();

private slots:

void slots_file_selected();

private:

Ui::Form ui;

QString m_fileName;

QLibrary *pdllLib;

fpGetQrStr GetQrStr;

};

2.窗体类实现 QrCodeForm.cpp

CQrCodeForm::CQrCodeForm(QWidget *parent)

: UiBaseDialog(parent)

{

ui.setupUi(this);

createTitleBar(ui.Title,WindowToolMin | WindowToolClose,tr("二维码识别"));

QDesktopWidget *desk=QApplication::desktop();

int wd=desk->width();

int ht=desk->height();

this->move((wd-width())/2,(ht-height())/2);

connect(ui.pushButton,SIGNAL(clicked()),this,SLOT(slots_file_selected()));

pdllLib =new QLibrary("QTCode.dll");

if(!pdllLib->load())

{

return ;

}

else

{

GetQrStr=(fpGetQrStr)pdllLib->resolve("GetQrStr");

if(GetQrStr == NULL)

{

return ;

}

}

return ;

}

CQrCodeForm::~CQrCodeForm()

{

}

void CQrCodeForm::slots_file_selected()

{

m_fileName = QFileDialog::getOpenFileName(this,

tr("二维码打开文件"),

"C:\\",

tr("任何文件(*.*)"

";;文本文件(*.png)"

));

ui.lineEdit->setText(m_fileName);

//

char buffer[QRBUFSIZ] = {0};

bool bResult = GetQrStr(m_fileName.toStdString().c_str(), buffer, QRBUFSIZ);

//UTF-8编码

QString ss = QTextCodec::codecForName("UTF-8")->toUnicode(buffer);

if(bResult)

{

ui.textEdit->setText(ss);

QImage* img=new QImage;

//加载图像

if(! ( img->load(m_fileName) ) )

{

QMessageBox::information(this,

tr("打开图像失败"),

tr("打开图像失败!"));

delete img;

return;

}

* img=img->scaled(ui.label->width(),ui.label->height(),Qt::KeepAspectRatio);

ui.label->setPixmap(QPixmap::fromImage(*img));

}

else

{

ui.textEdit->setText(tr("图片不是合法二维图片"));

}

}

实现比较简单,源代码就不奉上了,可执行程序下载地址 :http://yunpan.cn/QaMAsV52ifsIb (提取码:eee2)

注:

欢迎技术交流,共同进步,转载请注明出处并保持作品的完整性。

作者:程序人生     原文:http://blog.csdn.net/hiwubihe/article/details/38679621

qt二维码示例

时间: 2024-10-05 06:50:06

qt二维码示例的相关文章

微信二维码支付native原生支付开发模式二

模式一相比,流程更为简单,不依赖设置的回调支付URL.商户后台系统先调用微信支付的统一下单接口,微信后台系统返回链接参数code_url,商户后台系统将code_url值生成二维码图片,用户使用微信客户端扫码后发起支付.注意:code_url有效期为2小时,过期后扫码不能再发起支付. 1.业务流程时序图 图6.9原生支付模式二时序图 业务流程说明: 1)商户后台系统根据用户选购的商品生成订单. 2)用户确认支付后调用微信支付[统一下单API]生成预支付交易: 3)微信支付系统收到请求后生成预支付

通过CoreImage生成二维码

从IOS7开始集成了二维码的生成和读取功能 生成二维码的步骤: 1.导入CoreImage框架 2.通过滤镜CIFilter生成二维码 二维码的内容(传统的条形码只能放数字): 纯文本 名片 URL 生成二维码示例代码如下: // 1.实例化二维码滤镜CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; // 2.恢复滤镜的默认属性 (因为滤镜有可能保存上一次的属性)[filter setDefaults]

二维码扫描与生成

为了方便下载挂一个百度盘链接,包含: 1.ZBarSDK .a文件(armv7 arm64和armv7 arm64 i386两种,如有其他需求请自行生成) 2.ZBarSDK 3.libqrencode 4.ZBar相机扫描 相册扫描 iOS原生相机扫描 和 libqrencode生成二维码示例程序 (一)二维码扫描之ZBarSDK的使用 1.1 生成.a文件 (1)打开ZBar-master/iphone/zbar.xcodeproj (2)更改Architectures (3)如果弹出警告,

Qt+QZXing编写识别二维码的程序

本人最近在用Qt编写程序,需要用编写二维码识别功能.在网上搜寻一番,找到了QZXing.配置过程中确实出了一大把汗,这里我写这篇文章记录配置方法,替后人省一把汗吧!我的开发环境:MSVC2010 + Qt5 从这里下载最新版的QZXing_sourceV2.3.zip,解压之后得到的是源代码,里面有一个QZXing.pri文件.理论上用MSVC加载这个pri文件之后这个库的代码就会出现在工程的代码列表中,但是理论归理论,实际上msvc在加载pri的过程中,弹出一大堆错误信息,完全不知所云,网上找

XAMARIN ANDROID 二维码扫描示例

现在二维码的应用越来越普及,二维码扫描也成为手机应用程序的必备功能了.本文将基于 Xamarin.Android 平台使用 ZXing.Net.Mobile  做一个简单的 Android 条码扫描示例程序. 1.新建一个 Xamarin.Android 应用: 阅读全文

servlet中用ZXing生成条码二维码并输出到web页面的示例

1.生成条码的servlet代码: import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletR

Qt之二维码扫描

简述 二维码(QR Code)是用某种特定的几何图形按一定规律在平面(二维方向)分布的黑白相间的图形记录数据符号信息的.是所有信息数据的一把钥匙.应用十分广泛,如:产品防伪/溯源.广告推送.网站链接.数据下载.商品交易.定位/导航.电子凭证.车辆管理.信息传递.名片交流.wifi共享等. 二维条码常用的码制: Data Matrix.MaxiCode.Aztec.QR Code.Vericode.PDF417.Ultracode.Code 49.Code 16K等. 简述 二维码与一维码 二维码

qt for ios扫描二维码功能实现

问题: 公司项目考虑到跨平台一直都是用qt做,由于项目需求,项目上要增加一个二维码扫描功能,在安卓可以用QVideoProbe实现抓取摄像头视频帧,用QZxing解码图片,从而实现二维码扫描,但是在ios上,QVideProbe并不支持,所以只好选择其他抓取视频帧的方法,考虑使用OPencv实现抓取视频帧,但是在查看ios文档时,ios7 以上直接支持二维码扫描功能,所以放弃使用opencv抓取 + zxing解码的方法.从而采取ios官方提供的二维码解码功能. 实现: 由于我们项目ui一直是用

PHP微信扫描二维码登录网站代码示例

扫描二维码登录对于现在的web应用来说,确实是个很炫酷的功能,安全性也可以保障,不少朋友可能觉得这是个很复杂的工作,其实不然,真正说来只有几个步骤而已. 原理 PC浏览器展示一张二维码图片,该图片二维码值为一段绝对地址的url,大致如下:http://www.example.com/oauth/qrcode?key=key PC浏览器定期轮询 http://www.example.com/oauth/query,可能有的同学会问,怎么不用带上key?这里我们用session来保存key,所以链接