资源简介
Qt 5.7 实现生成Code39条码,独立的类可直接移植,生成的图片参数可设置,完整的Demo程序,直接编译可运行

代码片段和文件信息
/*****************************
生成Code39条码
By Jeff.Ma 2018-08-28
******************************/
#include “code39.h“
Code39::Code39(QString BarCode QString SavePath int fontSize)
{
barcode = BarCode;
path = SavePath;
m_barHigh = 40;
m_barWidth = 2;
m_fontSize = fontSize;
m_includeSN = false;
InitMap();
//start();
}
void Code39::start(int barWidth int high bool sn)
{
m_includeSN = sn;
m_barHigh = high;
m_barWidth = barWidth;
//校验字符是否合法
QString com=“0123456789ABCDEFGHIJKLMNOPQISTUVWXWZ+-*/%$. “;//合法字符模版
for(int i=0;i {
if(!com.contains(barcode.at(i)))
{
QMessageBox msg;
msg.setText(QStringLiteral(“条形码字符不合法!\n合法字符:A~Z 0~9 +-/%$[空格]“));
msg.exec();
return;
}
}
draw(CodeBinary(barcode)barcode);
}
void Code39::draw(QString BinaryNumQString barcode)
{
int maxWidth;
//预留10px的左右空白;
maxWidth = m_barWidth * BinaryNum.size() + 5;
//计算条线宽度时,精度丢失造成条码右边空白,进行右移居中
int move=(maxWidth - m_barWidth * BinaryNum.size()) / 2;
QSize size(maxWidth m_barHigh + m_fontSize + 5);
QImage image(size QImage::Format_ARGB32);
image.fill(qRgba(255 255 255 0));
//QBitmap bmp(maxWidthm_barHigh+m_fontSize);
QPainter painter(&image);
QPen whiteblack;
// painter.setRenderHint(QPainter::Antialiasingtrue);//弧线圆润
white.setColor(QColor(255255255));
black.setColor(QColor(000));
white.setWidth(m_barWidth);
black.setWidth(m_barWidth);
//背景充填白色
painter.setPen(white);
painter.drawRect(0 0 maxWidth m_barHigh + m_fontSize);
//画线
for(int i=0;i {
if(BinaryNum.at(i)==‘1‘) painter.setPen(black);
else painter.setPen(white);
painter.drawLine(i*m_barWidth+m_barWidth/2+move0i*m_barWidth+m_barWidth/2+movem_barHigh);
}
qDebug()< //添加底部条形码字符
painter.setPen(black);
painter.setRenderHint(QPainter::Antialiasingtrue);
painter.setRenderHint(QPainter::TextAntialiasingtrue);
painter.setRenderHint(QPainter::HighQualityAntialiasingtrue);
QFont font;
// font.setFamily(“宋体“);
font.setPixelSize(m_fontSize);
font.setWeight(QFont::ExtraLight);
painter.setFont(font);
if(m_includeSN == false)
{
painter.drawText(5 m_barHigh + 5 maxWidth m_fontSize Qt::AlignCenter barcode);
}
else
{
painter.drawText(5 m_barHigh + 5 maxWidth m_fontSize Qt::AlignCenter “S/N:“ + barcode);
}
image.save(path + barcode + “.bmp“);
}
QString Code39::CodeBinary(QString barcode)
{
barcode=“*“+barcode+“*“;
QString str=““;
for(int i=0;i {
str+=map[barcode.at(i)]+“0“;//每个字符的二进制逻辑码之间,用“0”隔开(加一条白线)
}
return str;
}
void Code39::InitMap(
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 63210 2020-03-18 22:03 DemoCode39\app\CODE39-00001.bmp
文件 2045579 2020-03-18 22:02 DemoCode39\app\DemoCode39.exe
文件 5055 2020-03-18 21:53 DemoCode39\code39.cpp
文件 753 2020-03-18 21:46 DemoCode39\code39.h
文件 1162 2020-03-18 21:52 DemoCode39\democode39.cpp
文件 384 2020-03-18 21:14 DemoCode39\democode39.h
文件 1081 2020-03-18 21:14 DemoCode39\DemoCode39.pro
文件 23454 2020-03-18 20:59 DemoCode39\DemoCode39.pro.user
文件 4340 2020-03-18 22:02 DemoCode39\democode39.ui
文件 183 2020-03-18 20:59 DemoCode39\main.cpp
目录 0 2020-03-18 22:02 DemoCode39\app
目录 0 2020-03-18 22:02 DemoCode39
----------- --------- ---------- ----- ----
2145201 12
相关资源
- vtk QT做的三维地质可视化系统2of2
- Qt局域网聊天软件
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- C 餐厅叫号系统(QT平)
- QT 实现文件下载
- qt图像处理
- QT,JPEG解码源代码(已完成)
- Qt 播放音频文件
- Qt 读取16进制的data文件
- MQTT+串口(usart)透传
- 易语言QQTEA算法源码
- VC工程转Qt工程文件的工具
- MQTT推送Demo
- 基于Linux、QT的视频监控系统的设计与
- Qt 百度地图 定位
- QT酷炫界面开发指南《QmlBook》
- Ubuntu下操作Excel,qt代码
- Qt图片浏览器 --基于Qt的Graphics View f
- code39条形码字体
- qtnribbon2破解
- Qt软件开发 完整项目代码
- MQTT_3.1protocol_Specific中文版
- 在QT中使用RTP进行视频的采集和传输
- Mini6410 Qt4和Qtopia编程开发指南
- qt_ffmpeg_mp4_export_and_import.zip
- QT5.5入门与项目实战
- Huffman Compress 霍夫曼编码 压缩 解压缩
- 基于QT的黑白棋游戏设计和实现
评论
共有 条评论