QT5-打印标签模板的需求设计和实现

15 篇文章 4 订阅

1. 总体需求概述

  1. 在工业生产或日常生活中,我们在物品表面常常需要打印信息,例如个人证件,社保卡,食品生产相关信息,常常会涉及到打印模板的问题,需要设计打印字体,颜色,位置,大小,类型等参数,而内容都是各不相同,可以随时更换,从而打印出具有相同格式但内容迥异的标签信息。
  2. 由于目前的GPIDE使用了C#技术栈,部分以插件形式支持,修改底层和维护起来也不方便,故希望改用Qt技术重新构造,优化界面显示和程序功能,并支持原有的模板格式,兼容之前的程序,使之可以继续使用。

2. 系统简要设计

  1. 可以通过该程序创建一个模板,保存格式为xml文件,并能导入该xml文件进行重新绘制出原有设计。
  2. 平印设计:有文字模板,条码模板(包括一维码和二维码),图片模板。
  3. 凸字设计:凸字模板。
  4. 绘图区域:可以支持多种大小的设计,例如卡片,A4(横板,竖版)。
  5. 语言国际化:支持中英文。

3. 系统详细设计

3.1 界面设计

3.1.1 菜单栏:

文件

新建,点击后将新建一张绘图界面,需要提示是否保存并关闭当前模板,并且命名为"设计+递增序号",通过设置向导页面,设置页面初始参数,默认为卡片大小-横板,供选择有(卡片/A4/自定义等(显示对应的默认长宽,自定义可编辑长宽),横板/竖版),并绘出动态示意图。(快捷键 Ctrl+N)
打开,通过打开一个xml模板文件,需要提示是否保存并关闭当前模板,然后在界面上可以渲染对应的设计。
关闭,可以关闭所有界面上的模板,需要设置部分操作不可用。
保存,如果当前模板未被保存过则需要设置文件名,如果已经保存过则直接按当前文件名进行保存,提示保存成功并2秒后自动消失。
另存为,可以将当前模板文件另外命名并保存。

打印预览:打印预览展示

打印:设置相关参数进行打印

退出,如果当前模板文件已被保存且无更新则直接关闭程序,否则提示用户先保存再关闭。

语言

中文:中文简体(Simplified Chinese)
英文:英文(English)

编辑

重做:恢复下一步操作

取消:撤销上一步操作

剪切:剪切选中的图形

复制:复制选中的图形

粘贴:粘贴当前剪贴板的图形

视图

网格:勾选可以切换成带网格的设计背景,有利于设计时更好地分辨位置,单位是1mm。

实际大小:界面设计与实际的尺寸比例1:1。

帮助

版本号:显示相关版本信息
帮助: 软件使用说明文档

3.1.2 工具栏:

上方横条工具栏

新建,同文件菜单栏中的新建

打开,同文件菜单中的打开

保存,同文件菜单栏中的保存

另存为,同文件菜单栏中的另存为

重做:恢复下一步操作

取消:撤销上一步操作

剪切:剪切选中的图形

复制:复制选中的图形

粘贴:粘贴当前剪贴板的图形

打印:可下拉,设置相关参数进行打印

左侧的工具栏

文本:文字处理相关设置,选中即可在绘图界面上添加,或采用拖拽的方式添加

条码:包含一维码和二维码,同上

图片:图片相关设置,同上

凸字:凸字相关设置,同上

3.1.3 属性栏:

在绘图区域右侧:

图层属性:处于右上方,显示所有图层的相关简要信息,如ID,Var,ArtName,Address.

属性:处于右下方,显示当前选中图层的相关属性,并且可进行编辑,回车即可保存并更新。

3.1.4 绘图区域:

​ 根据设置的大小来显示页面绘图区域,并且可以显示页面所占的尺寸,以及选中图层时可以显示图层所占的区域尺寸。当选中某个图层时,鼠标经过图层上方,箭头变成十字箭头。

​ 绘图区域可以根据鼠标所在位置进行放大缩小,并且时刻显示鼠标当前位置。

​ 若选中当前图层,在当前图层右键鼠标,可以弹出相关操作窗口,例如复制,剪切,粘贴,属性设置等。

3.2 导出模板设计

3.2.1 导出后的模板

​ 为了兼容之前的导出模板xml文件,先分析一下之前模板中所包含的内容。

​ 大致分两部分:

  • 图层信息,包含所以图层的相关属性。

  • 图层序列,若启用变量,则会生成一个变量相关的序列信息。

    现可能需要其他写入模板的配置,例如页面的大小,方向等相关设置。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
实现一个标签打印设计软件,需要以下步骤: 1. 设计界面:使用Qt的界面设计设计软件界面,包括菜单栏、工具栏、标签设计区域等。 2. 添加控件:在标签设计区域添加需要的控件,如标签尺寸、文本框、图片框等。 3. 编写代码:编写Qt代码实现标签设计、预览、打印等功能。可以使用Qt打印机类实现打印功能,也可以使用第三方库,如QZ Tray。 4. 测试和调试:测试和调试软件,确保功能正常。 下面是一个简单的示例代码,实现了一个标签打印设计软件的基本功能: ```cpp #include <QtWidgets> class LabelDesigner : public QMainWindow { public: LabelDesigner(QWidget *parent = nullptr) : QMainWindow(parent) { // 添加菜单栏 QMenuBar *menuBar = new QMenuBar(this); setMenuBar(menuBar); // 添加文件菜单 QMenu *fileMenu = menuBar->addMenu(tr("文件")); // 添加打开和保存动作 QAction *openAction = fileMenu->addAction(tr("打开")); connect(openAction, &QAction::triggered, this, &LabelDesigner::openFile); QAction *saveAction = fileMenu->addAction(tr("保存")); connect(saveAction, &QAction::triggered, this, &LabelDesigner::saveFile); // 添加工具栏 QToolBar *toolBar = addToolBar(tr("工具")); toolBar->setIconSize(QSize(16, 16)); // 添加标签尺寸选择框 QComboBox *sizeCombo = new QComboBox(this); sizeCombo->addItem(tr("2 x 1")); sizeCombo->addItem(tr("3 x 2")); sizeCombo->addItem(tr("4 x 3")); toolBar->addWidget(sizeCombo); // 添加文本框和图片框 QLineEdit *textEdit = new QLineEdit(this); toolBar->addWidget(textEdit); QLabel *imageLabel = new QLabel(this); toolBar->addWidget(imageLabel); // 添加标签设计区域 QWidget *labelWidget = new QWidget(this); setCentralWidget(labelWidget); QVBoxLayout *layout = new QVBoxLayout(labelWidget); layout->addWidget(new QLabel(tr("标签设计区域"), labelWidget)); // 添加打印按钮 QPushButton *printButton = new QPushButton(tr("打印"), this); toolBar->addWidget(printButton); connect(printButton, &QPushButton::clicked, this, &LabelDesigner::printLabel); } private: void openFile() { // 打开文件对话框 QString fileName = QFileDialog::getOpenFileName(this, tr("打开文件")); if (!fileName.isEmpty()) { // 加载文件内容 } } void saveFile() { // 保存文件对话框 QString fileName = QFileDialog::getSaveFileName(this, tr("保存文件")); if (!fileName.isEmpty()) { // 保存文件内容 } } void printLabel() { // 打印标签 QPrinter printer; printer.setPageSize(QPrinter::A4); QPrintDialog dialog(&printer, this); if (dialog.exec() == QDialog::Accepted) { QPainter painter(&printer); painter.drawText(10, 10, "Hello, World!"); } } }; int main(int argc, char *argv[]) { QApplication app(argc, argv); LabelDesigner designer; designer.show(); return app.exec(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鱼儿LY

一切随缘

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值