案例分享:Qt政務標籤設計器,標籤排版軟體定製與列印
需求
1.標籤設計器; 2.具備文字排版功能; 3.支援六種排版格式; 4.排版後可以輸出列印(demo中不包含); 5.排版後可以輸出標籤的指定協議文字FBD格式; 6.可以調整對應標籤的一些位置,x,y,寬度,高度,橫向間距,縱向間距; 7.支援排版後的標籤預覽; 8.標籤排版文字錯誤提示;
<br>
Demo v1.6.0
體驗下載地址
CSDN(粉絲免積分下載):http://download.csdn.net/download/qq21497936/21109751 QQ群:1047134658(點選“檔案”搜尋“labelDesigner ”,群內與博文同步更新)
<br>
模組化
模組化設計構架:
<br>
核心原始碼標頭檔案
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
<br>
若該文為原創文章,轉載請註明原文出處 本文章部落格地址:http://hpzwl.blog.csdn.net/article/details/119730466
「其他文章」
- RK3568開發筆記(一):瑞芯微RK3568晶片介紹,入手開發板的核心板介紹
- 樹莓派開發筆記(十三):入手研華ADVANTECH工控樹莓派UNO-220套件(二):安裝rtc等驅動
- 紅胖子創業一年整總結:前二十年題記,萌芽初期,外包初期,創業初期,未來規劃
- Qt MPlayer音樂播放器開發筆記(二):交叉編譯MPlayer以及部署到開發板播放演示
- zlib開發筆記(三):zlib庫介紹、在ubuntu上進行arm平臺交叉編譯
- 案例分享:Qt政務標籤設計器,標籤排版軟體定製與列印
- Qt 騰訊IM開發筆記(一):騰訊IM介紹、使用和Qt整合騰訊IM-SDK的工程模板Demo
- Qt MPlayer音樂播放器開發筆記(一):ubuntu上編譯MPlayer以及Demo演示
- 案例分享:Qt Arm基於RV1126平臺的內窺鏡軟硬整套解決方案(實時影像、凍結、拍照、錄影、背光調整、硬體光源調整,其他產品也可使用該平臺,如影片監控,物聯網產品等等)
- libzip開發筆記(二):libzip庫介紹、ubuntu平臺編譯和工程模板
- 臺達PLC開發筆記(二):臺達PLC設定主機通訊引數為RTU併成功通訊
- 臺達PLC開發筆記(一):臺達PLC連線介紹,分別使用485、網口與臺達PLC建立連線
- Qt的圖形檢視框架,最核心的三個類為:QGraphicsScene、QGraphicsItem與QGraphicsView。
- Windows上mingw32版本的openssl的編譯是屬於比較棘手的,OpenSSL本身不提供支援.。
- 案例分享:Qt modbus485除錯工具(讀寫Byte、Int、DInt、Real、DReal)(當前v1.3.0)
- 案例分享:某品牌音響系列協議除錯工具(搜尋主機,查詢通道,基本控制API,雲音樂API,語言節目API等,可增刪改指令)
- NSIS安裝包開發筆記(三):NSIS使用Qt做的安裝介面製作安裝包互動詳解
- NSIS製作安裝包筆記(一):NSIS介紹、使用NSIS預設嚮導指令碼製作Windows安裝包
- 海康攝像SDK開發筆記(一):海康威視網路攝像頭SDK介紹與模組功能
- Qt開發技術:Qt拽拖開發(一)拽託框架詳解及Demo