【问题标题】:Qt/C++ - Barcodes generated not readableQt/C++ - 生成的条码不可读
【发布时间】: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 应用程序中使其工作...如果您这样做并且可以从屏幕上扫描条形码,您可能想要在纸上打印你生成的那个,看看应用程序是否可以从这里扫描它(只是为了检查)
  • 你在哪里添加校验位?我从发布的代码中假设它是由调用者添加的。但现在我假设你完全忘记了。

标签: c++ c qt barcode


【解决方案1】:

Code 128 除了要显示的字符串还有一些要求。它需要一个起始字符、一个校验字符和一个终止字符。请参阅您的字体文档,了解您需要在字符串中插入的开始和停止字符的字符,以及检查代码算法的wikipedia

【讨论】:

  • 感谢您的回答。它们是我可以用于不需要任何特殊编码/填充的网址的任何条形码字体吗
  • @adnankamili 您可以改用 Code 39,它只需要在字符串前后加一个星号。
猜你喜欢
  • 2016-09-01
  • 2013-04-23
  • 2011-12-15
  • 2018-10-10
  • 1970-01-01
  • 2014-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多