2015-12-17 125 views
1

我在QT5/C++(Windows)中寫了一個簡單的條碼生成:的Qt/C++ - 條碼生成不可讀

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手機上的條形碼掃描器無法讀取生成的條碼。我在這種情況下做錯了什麼?

enter image description here

編輯: 純文本需要一些編碼。代碼示例請參考https://github.com/adamgiacomelli/Qt-barcode

+0

也許你打印機不夠好打印條形碼。你有沒有辦法發佈生成的條形碼的高分辨率稍微放大的圖像。我可能會知道它是否印得夠好。 – JSF

+0

@JSF我想從代碼中可以清楚的看到,我將它打印在QLabel中,而不是紙上。 –

+0

你是否試圖直接從屏幕上用手機的凸輪來讀取條形碼?嘗試將其打印到紙上,然後再試一次。有時,電話攝像頭不能很好地從顯示器前端到前端拍攝照片(我不知道這是物理原因),有時照片上會出現奇怪的條紋。 –

回答

6

除了要顯示的字符串外,代碼128還有一些要求。它需要一個開始字符,一個檢查字符和一個停止字符。查看您的字體文檔,瞭解需要在字符串中插入起始字符和結束字符的字符,以及用於檢查代碼算法的wikipedia

+0

感謝您的回答。是他們的任何條形碼字體我可以用於URL不需要任何特殊的編碼/填充 –

+0

@adnankamili你可以使用Code 39來代替它,它只需要在字符串之前和之後加星號。 –