案例分享:数字化智能制造工艺报告生成工具Demo(当前v1.0.1)

需求

  工艺通用模板展示文件、报告和相关模板导出pdf
  1.封面:左上序号,右上版本,文件名称,公司名称,公司logo,零件编号,零件名称。
  2.首页表头:机器型号、指令编号、指令版次、有效性、阶段标识
  3.首页内容:FO任务卡控制,换版说明,所需图样,所需技术文件
  4.其他页继续开发中
  5.设计采用接口的形式(当前使用txt),
  6.展示可2和3支持无限行数据,翻页,空格行,调整位置等等。
  7.可加载不同数据的txt直接生成pdf,并应用中展示和调用本地pdf打开,方便测试与生成。
  8.后续可添加表格,图像,三维图等等,此模块作为长期报告和展示模块会持续开发。
  9.不依赖系统和第三方插件,支持windows,linux和arm,只依赖qt本身,方便后续迭代和移植兼容。

 

Demo_v1.0.1

  在这里插入图片描述
  数据文件:
  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

下载

  windows 运行包下载地址:
  QQ技术群,进Q群,点击“文件”搜索“displayProcess”,群内与博文同步更新)

 

模块化

  在这里插入图片描述

 

Demo部分源码

调用代码

// 生成报告
_listImage = DisplayProcessManager::getInstance()->createDisplayProcessImages();

if(_listImage.size() > 0)
{
    _currentPage = 0;
    ui->widget_image->setImage(_listImage.at(_currentPage));
    // 打印打pdf
    QString filePath = PrinterManager::getInstance()->printToPdf(_listImage);
    ui->lineEdit_pdfFilePath->setText(filePath);
}else{
    _currentPage = 0;
}

DisplayProcessManager.h

#ifndef DISPLAYPROCESSMANAGER
#define DISPLAYPROCESSMANAGER

#include <QObject>
#include <QMutex>
#include <QMutexLocker>
#include <QPrinterInfo>
#include <QImage>
#include <QPainter>
#include <QFontMetrics>

#include "displayProcessCommon.h"


class DisplayProcessManager : public QObject
{
    Q_OBJECT
private:
    explicit DisplayProcessManager(QObject *parent = 0);

public:
    static DisplayProcessManager * getInstance();

public:
    QList<QImage> createDisplayProcessImages();

...

protected:
    QSize getA4Size();
    QImage createShouYe();                          // 创建首页
    QList<QImage> createFoRenWuKaKongZhi();         // 创建FO卡任务控制(FO任务卡控制+换版说明+所需图样+所需技术文件)
    QList<QImage> createGongZuoShuoMing();          // 创建工作说明(工作说明+原材料控制+设备汇总+工量具汇总+工装汇总)

protected:
    void saveCurrentImage(QImage image);            // 存储当前图片

protected:
    void drawContentPageTemplate(QPainter *painter);// 第二页开始的页模板(不含页码)

protected:                                          // 通用使用函数(固定位置)
    void drawBorder(QPainter *painter);             // 绘制边框
    void drawZHFO(QPainter *painter);               // 绘制ZHFO
    void drawJiXing(QPainter *painter);             // 绘制机型
    void drawFoXuLieHao(QPainter *painter);         // 绘制FO系列号
    void drawHeaderInfo(QPainter *painter);         // 绘制表头信息
    void drawFooterInfo(QPainter *painter);         // 绘制页脚信息(不含页码)
    void drawPageNum(QPainter *painter, int currentNum, int totalNum);  // 绘制页码(因为动态最后单独刷一次)

protected:                                          // 仅“首页”使用函数(固定位置)
    void drawBanCi(QPainter *painter);              // 绘制版次
    void drawInnerBorder(QPainter *painter);        // 绘制边框
    void drawFileTitle(QPainter *painter);          // 绘制文件标题
    void drawCompanyName(QPainter *painter);        // 绘制公司名称
    void drawLogoImage(QPainter *painter);          // 绘制logo
    void drawLingJianHao(QPainter *painter);        // 绘制零件号
    void drawLingJianMingCheng(QPainter *painter);  // 绘制零件名称

protected:                                          // 可能导致分页,具体内容
    QList<QImage> drawFoRenWuKaKongZhiTable(int y, int width, int height);      // 绘制“FO任务卡控制”表
    QList<QImage> drawHuanBanShuoMingTable(int y, int width, int height);       // 绘制“换版说明”表
    QList<QImage> drawSuoXuTuYangTable(int y, int width, int height);           // 绘制“所需图样”表
    QList<QImage> drawSuoXuJiShuWenJianTable(int y, int width, int height);     // 绘制“所需技术文件”表

    QList<QImage> drawGongZuoShuoMingTable(int y, int width, int height);       // 绘制“工作说明"表
    QList<QImage> drawYuanCaiLiaoKongZhiTable(int y, int width, int height);    // 绘制“原材料控制”表
    QList<QImage> drawSheBeiHuiZongTable(int y, int width, int height);         // 绘制“设备汇总”表
    QList<QImage> drawGongLiangJuHuiZongTable(int y, int width, int height);    // 绘制“工量具汇总”表
    QList<QImage> drawGongZhuangHuiZongTable(int y, int width, int height);     // 绘制“工装汇总”表

...

private:
    static DisplayProcessManager * _pInstance;
    static QMutex _mutex;

...

};

#endif // DISPLAYPROCESSMANAGER
 

工程模板v1.0.1

  在这里插入图片描述

posted @ 2026-07-28 18:02  长沙红胖子Qt·西安  阅读(5)  评论(0)    收藏  举报