【发布时间】:2015-12-17 17:22:50
【问题描述】:
我用 Qt5/C++ (Windows) 编写了一个简单的条形码生成器:
void BarcodeDialog::printBarcode(QString barcodeText)
{
int id = QFontDatabase::addApplicationFont(":/fonts/code128.ttf");
QFontDatabase::applicationFontFamilies(id).at(0);
QFont barcodefont = QFont("Code 128", 50, QFont::Normal);
barcodefont.setLetterSpacing(QFont::AbsoluteSpacing,0.0);
this->ui->label->setFont(barcodefont);
this->ui->label->setText(barcodeText);
}
它会生成条形码,但我的 Android 手机上的条形码扫描仪应用程序无法读取生成的条形码。在这种情况下我做错了什么?
编辑: 纯文本需要一些编码。代码示例参考https://github.com/adamgiacomelli/Qt-barcode
【问题讨论】:
-
也许您的打印机不够好,无法打印条码。您有什么方法可以发布生成的条形码的高分辨率稍微放大的图像。我可能可以判断它是否打印得足够好。
-
@JSF 我想从代码中可以清楚地看出我是在 QLabel 中而不是在纸上打印它。
-
您是否尝试使用手机的摄像头直接从屏幕读取条形码?尝试将其打印到纸上并再试一次。有时手机摄像头不能很好地从显示器正面到正面拍照(我不知道这是什么物理原因)有时照片上会出现奇怪的条纹。
-
已删除的答案移至评论(以帮助其他人理解 OP 问题):请参阅这个有趣的网页:taltech.com/barcodesoftware/articles/…。您应该找到一个有效的条形码(例如在谷歌图片上),将其打印在纸上。如果您的 Android 应用程序可以在纸上扫描但不能在屏幕上扫描...您将无法在 Qt 应用程序中使其工作...如果您这样做并且可以从屏幕上扫描条形码,您可能想要在纸上打印你生成的那个,看看应用程序是否可以从这里扫描它(只是为了检查)
-
你在哪里添加校验位?我从发布的代码中假设它是由调用者添加的。但现在我假设你完全忘记了。