• 案例分享:Qt政务标签设计器,标签排版软件定制与打印


    需求

      1.标签设计器;
      2.具备文字排版功能;
      3.支持六种排版格式;
      4.排版后可以输出打印(demo中不包含);
      5.排版后可以输出标签的指定协议文本FBD格式;
      6.可以调整对应标签的一些位置,x,y,宽度,高度,横向间距,纵向间距;
      7.支持排版后的标签预览;
      8.标签排版文本错误提示;

     

    Demo v1.6.0

      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    体验下载地址

      CSDN(粉丝免积分下载):https://download.csdn.net/download/qq21497936/21109751
      QQ群:1047134658(点击“文件”搜索“labelDesigner ”,群内与博文同步更新)

     

    模块化

      模块化设计构架:
      在这里插入图片描述

     

    核心源码头文件

    Widget.h

    #ifndef WIDGET_H
    #define WIDGET_H
    
    #include <QTextCodec>
    #include <QWidget>
    #include <QAbstractButton>
    #include <QFileDialog>
    #include <QMessageBox>
    #include "LabelWidget.h"
    
    namespace Ui {
    class Widget;
    }
    
    class Widget : public QWidget
    {
        Q_OBJECT
    
    public:
        explicit Widget(QWidget *parent = 0);
        ~Widget();
    
    protected:
        void initControls();
        void createLabelWidgets();
        void updateLabelWidgets();
        void updateScale();
        QStringList parseNames(QString content);
    
    protected slots:
        void slot_updateScale();
        void slot_buttonClicked(QAbstractButton *pAbstractButton);
    
    protected:
        void resizeEvent(QResizeEvent *event);
    
    private slots:
        void on_spinBox_x_valueChanged(int arg1);
        void on_spinBox_y_valueChanged(int arg1);
        void on_spinBox_xNumber_valueChanged(int arg1);
        void on_spinBox_yNumber_valueChanged(int arg1);
        void on_spinBox_labelWidth_valueChanged(int arg1);
        void on_spinBox_labelHeight_valueChanged(int arg1);
        void on_doubleSpinBox_scale_valueChanged(double arg1);
        void on_spinBox_labelVerticallSpace_valueChanged(int arg1);
        void on_spinBox_labelHorizalSpace_valueChanged(int arg1);
        void on_textEdit_names_textChanged();
        void on_pushButton_createLabel_clicked();
    
        void on_pushButton_export_clicked();
    
    private:
        Ui::Widget *ui;
    
    private:
        QList<LabelWidget *> _listLabelWidget;
        QStringList _listNames;
        QStringList _listErrorNames;
    
        int _xMM;
        int _yMM;
        int _widthMM;
        int _heightMM;
        int _widthSpace;
        int _heightSpace;
        int _widthNumber;
        int _heightNumber;
        bool _firstRotate180;
        bool _secondRotate180;
        bool _showFontVertical;
        int _fontPt;
    };
    
    #endif // WIDGET_H
    

    ScreenManager.h

    #ifndef SCREENMANAGER_H
    #define SCREENMANAGER_H
    
    #include <QObject>
    
    class ScreenManager : public QObject
    {
        Q_OBJECT
    public:
        explicit ScreenManager(QObject *parent = nullptr);
    
    signals:
    
    public slots:
    
    public:
        static float getScreenWidthMM();
        static float getScreenHeightMM();
        static float getScreenWidthMM(int width);
        static float getScreenHeightMM(int height);
        static int getWidth();
        static int getHeight();
        static int getWidth(float widthMM);
        static int getHeight(float heightMM);
    
    private:
        static float inchToMMScale;
    
    };
    
    #endif // SCREENMANAGER_H
    

    LabelWidget.h

    #ifndef LABELWIDGET_H
    #define LABELWIDGET_H
    
    #include <QWidget>
    #include <QTimer>
    #include <QtMath>
    
    namespace Ui {
    class LabelWidget;
    }
    
    class LabelWidget : public QWidget
    {
        Q_OBJECT
    
    public:
        explicit LabelWidget(QWidget *parent = 0);
        ~LabelWidget();
    
    public:
        float getXMM() const;
        float getYMM() const;
        float getLabelWidthMM() const;
        float getLabelHeightMM() const;
        int getVerticalLabelsNumber() const;
        int getHorizalLabelNumber() const;
        float getScale() const;
        float getLabelHorizalSpaceMM() const;
        float getLabelVerticalSpaceMM() const;
        QStringList getListName() const;
        bool getFirstLabelRotate180() const;
        bool getSecondLabelRotate180() const;
        int getFontPt() const;
        bool getShowFontVertical() const;
    
    public:
        void setXMM(float xMM);
        void setYMM(float yMM);
        void setLabelWidthMM(float labelWidthMM);
        void setLabelHeightMM(float labelHeightMM);
        void setVerticalLabelsNumber(int verticalLabelsNumber);
        void setHorizalLabelNumber(int horizalLabelNumber);
        void setScale(float scale);
        void setLabelHorizalSpaceMM(float labelHorizalSpaceMM);
        void setLabelVerticalSpaceMM(float labelVerticalSpaceMM);
        void setLabelsNames(QStringList listName);
        void setFirstLabelRotate180(bool firstLabelRotate180);
        void setSecondLabelRotate180(bool secondLabelRotate180);
        void setFontPt(int fontPt);
        void setShowFontVertical(bool showFontVertical);
    
    
    protected:
        void initControls();
        void updateSize();
    
    protected slots:
        void slot_initScale();       // 用于规避初始化位置偏差
    
    protected:
        void paintEvent(QPaintEvent *event);
        void resizeEvent(QResizeEvent *event);
    
    protected:
        void drawBackground(QPainter *painter);
        void drawLabelBorder(QPainter *painter);
        void drawLabel(QPainter *painter);
    
    private:
        Ui::LabelWidget *ui;
    
    private:
        QColor _backgroundColor;
        QColor _labelBorderColor;
        int _labelBorderWidth;
    
        float _labelWidthMM;
        float _labelHeightMM;
        float _labelHorizalSpaceMM;
        float _labelVerticalSpaceMM;
        int _verticalLabelsNumber;
        int _horizalLabelNumber;
        float _xMM;
        float _yMM;
        float _pageWidthMM;
        float _pageHeightMM;
        float _scale;
    
        int _x;
        int _y;
        int _labelWidth;
        int _labelHeight;
        int _pageWidth;
        int _pageHeight;
        int _labelHorizalSpace;
        int _labelVerticalSpace;
    
        bool _firstLabelRotate180;
        bool _secondLabelRotate180;
        int _fontPt;
        bool _showFontVertical;
    
        QStringList _listName;
    };
    
    #endif
    
     

    若该文为原创文章,转载请注明原文出处
    本文章博客地址:https://hpzwl.blog.csdn.net/article/details/119730466

  • 相关阅读:
    [置顶] 当今世界最受人们重视的十大经典算法
    Android入门:调用WebService
    Android入门:实现一个File存储的辅助类
    多线程下载辅助类实现
    在Java程序中设置代理
    配置EditPlus使其可以编译运行java程序
    Android入门:文件上传
    Resource is out of sync with the file system
    【入门算法】思维导图
    sharepoint2010 重建服务器场的方法
  • 原文地址:https://www.cnblogs.com/qq21497936/p/15149506.html
Copyright © 2020-2023  润新知