案例分享:Qt政务标签设计器,标签排版软件定制与打印
需求
  1.标签设计器;
  2.具备文字排版功能;
  3.支持六种排版格式;
  4.排版后可以输出打印(demo中不包含);
  5.排版后可以输出标签的指定协议文本FBD格式;
  6.可以调整对应标签的一些位置,x,y,宽度,高度,横向间距,纵向间距;
  7.支持排版后的标签预览;
  8.标签排版文本错误提示;
  
  
  
  
  
  
  
  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  
                     
                    
                 
                    
                