为了方便,从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编码中,自然也就无法显示了,当然,少部分汉字还是在日文中有使用的。