QT5 zint 生成中文二维码

6 7 月

为了方便,从zint的frontend_qt4目录将barcodeitem.cpp和barcodeitem.h复制到项目中。

在mainform.ui中添加一个QGrapicsView,取名qrView。

MainWindow::MainWindow中输入如下代码:

ui->qrView->setScene(new QGraphicsScene);
    ui->qrView->scene()->addItem(&m_bc);

    m_bc.ar=(Zint::QZint::AspectRatioMode)1;
    m_bc.bc.setSymbol(BARCODE_QRCODE);
    m_bc.bc.setSecurityLevel(0);
    m_bc.bc.setInputMode(DATA_MODE);  //这里是关键
    m_bc.bc.setWidth(0);
    m_bc.bc.setHeight(50);

    QString a = QString::fromUtf8("涛儿的小窝");
    //qDebug() << a.toUtf8();
    m_bc.bc.setText(a);

    m_bc.update();
    ui->qrView->scene()->update();

在各种demo中,setInputMode都是设置为UNICODE_MODE,但是通过跟踪源码发现其会将utf8转为utf16,然后转为JIS编码,也就是日文的编码,大部分汉字自然是不会包含在JIS编码中,自然也就无法显示了,当然,少部分汉字还是在日文中有使用的。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注