需求是要把一串数字转化成条码,显示在界面上供打印机打印。
过程是使用zint库转化文本为rgb的buffer,然后把rgb转换成qt的QPixmap,在界面上显示,
如果是MFC的话,原理相通,有rgb数据显示都好办。
QPixmap Bitmap2Pixmap(unsigned char *bitmap, int width, int height)
{
QImage img(bitmap, width, height, QImage::Format_RGB888);
QPixmap ret;
ret.convertFromImage(img);
return ret;
}
struct zint_symbol *m_symbol;
m_symbol = ZBarcode_Create();
if (m_symbol == NULL)
{
QMessageBox::warning(this, "test", "ZBarcode_Create create failed!");
return;
}
else
{
m_symbol->symbology = BARCODE_CODE128;
m_symbol->scale = 2;
}
ZBarcode_Encode_and_Buffer(m_symbol, (unsigned char *)inputStr.toLocal8Bit().data(), deviceId.size(), 0);
QPixmap pixmap = Bitmap2Pixmap((unsigned char *)m_symbol->bitmap, m_symbol->bitmap_width, m_symbol->bitmap_height);
ui->codeLabel->setPixmap(pixmap);
ZBarcode_Delete(m_symbol);
作者:帅得不敢出门 c++哈哈堂:31843264