里飞网
标题:
QT二维码,可直接使用
[打印本页]
作者:
阿里兄
时间:
2019-11-11 14:25
标题:
QT二维码,可直接使用
本帖最后由 阿里兄 于 2021-12-28 14:50 编辑
1、qr.pri添加到pro工程。
include ($PWD/qr/qr.pri)
INCLUDEPATH += $PWD/qr
复制代码
新的QT可能需要换一种添加方法(如下):
include (./qr/qr.pri)
INCLUDEPATH += ./qr
复制代码
2、pro工程增加宏定义。
DEFINES += HAVE_CONFIG_H
复制代码
3、UI界面拖入widget控件,并提升为
QRWidget
(, 下载次数: 740)
上传
点击文件名下载附件
4、直接使用有QRWidget里的函数setString即可。
(, 下载次数: 1116)
上传
点击文件名下载附件
修正不居中显示问题。
(, 下载次数: 1022)
上传
点击文件名下载附件
作者:
阿里兄
时间:
2020-5-11 08:54
有一个小BUG,画的二维码没有居中显示,修改qrwidget.cpp文件里面的void QRWidget::draw(QPainter &painter, int width, int height)函数,修改如下
void QRWidget::draw(QPainter &painter, int width, int height)
{
QColor foreground(Qt::black);
painter.setBrush(foreground);
const int qr_width = qr->width > 0 ? qr->width : 1;
double scale_x = width / qr_width;
double scale_y = height / qr_width;
int sx = (width-qr_width*scale_x)/2;
int sy = (height-qr_width*scale_y)/2;
for( int y = 0; y < qr_width; y ++)
{
for(int x = 0; x < qr_width; x++)
{
unsigned char b = qr->data[y * qr_width + x];
if(b & 0x01)
{
QRectF r(x * scale_x+sx, y * scale_y+sy, scale_x, scale_y);
painter.drawRects(&r, 1);
}
}
}
}
复制代码
欢迎光临 里飞网 (http://dz.lfly.xyz/)
Powered by Discuz! X3.3