需求
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