里飞网

标题: QT二维码,可直接使用 [打印本页]

作者: 阿里兄    时间: 2019-11-11 14:25
标题: QT二维码,可直接使用
本帖最后由 阿里兄 于 2021-12-28 14:50 编辑

1、qr.pri添加到pro工程。
  1. include     ($PWD/qr/qr.pri)

  2. INCLUDEPATH += $PWD/qr
复制代码
新的QT可能需要换一种添加方法(如下):
  1. include     (./qr/qr.pri)
  2. INCLUDEPATH += ./qr
复制代码


2、pro工程增加宏定义。
  1. 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)函数,修改如下
  1. void QRWidget::draw(QPainter &painter, int width, int height)
  2. {
  3.     QColor foreground(Qt::black);
  4.     painter.setBrush(foreground);
  5.     const int qr_width = qr->width > 0 ? qr->width : 1;
  6.     double scale_x = width / qr_width;
  7.     double scale_y = height / qr_width;

  8.     int sx = (width-qr_width*scale_x)/2;
  9.     int sy = (height-qr_width*scale_y)/2;
  10.     for( int y = 0; y < qr_width; y ++)
  11.     {
  12.         for(int x = 0; x < qr_width; x++)
  13.         {
  14.             unsigned char b = qr->data[y * qr_width + x];
  15.             if(b & 0x01)
  16.             {
  17.                 QRectF r(x * scale_x+sx, y * scale_y+sy, scale_x, scale_y);
  18.                 painter.drawRects(&r, 1);
  19.             }
  20.         }
  21.     }
  22. }
复制代码





欢迎光临 里飞网 (http://dz.lfly.xyz/) Powered by Discuz! X3.3