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

AAA红模仿

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

Demo v1.6.0
  在这里插入图片描述
  在这里插入图片描述
  在这里插入图片描述
  在这里插入图片描述
  在这里插入图片描述
  在这里插入图片描述
  在这里插入图片描述

体验下载地址
  CSDN(粉丝免积分下载):https://download.csdn.net/dow...
  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/a...

阅读 239
4 声望
1 粉丝
0 条评论
4 声望
1 粉丝
文章目录
宣传栏