本文章博客地址:https://hpzwl.blog.csdn.net/article/details/119730466
红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门)
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 *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