219 lines
6.2 KiB
C++
219 lines
6.2 KiB
C++
#ifndef TESTPRINTWIDGET_H
|
|
#define TESTPRINTWIDGET_H
|
|
|
|
#include <QWidget>
|
|
#include <QButtonGroup>
|
|
#include <QTextEdit>
|
|
#include <QLineEdit>
|
|
#include <QXmlStreamReader>
|
|
#include "DialogSaveFile.h"
|
|
#include "DialogFileOperation.h"
|
|
#include <QGraphicsView>
|
|
// 包含UI自动生成的头文件
|
|
#include "ui_TestPrintWidget.h"
|
|
|
|
#include "scene/picscene.h"
|
|
|
|
#include "ImageLoader.h"
|
|
#include "ItemEditor.h"
|
|
#include "scene/PicDateItem.h"
|
|
#include "scene/PicImageItem.h"
|
|
#include "scene/ScheduleShiftsEditor.h"
|
|
#include "scene/PicCounterItem.h"
|
|
#include <QScopedPointer>
|
|
|
|
#include "selectcodedlg.h"
|
|
#include <scene/piccodeitem.h>
|
|
#include "CounterVarSet.h"
|
|
#include "scene/BarcodeEditor.h"
|
|
|
|
typedef struct ItemReplaceInfo
|
|
{
|
|
unsigned char vartypeR; //该图元中哪些类型(年、月、日...)需要替换
|
|
QString text; // 最初需要替换的内容 yyyy-MM-dd ...
|
|
// QMap<int,QStringList> map; //类型对应替换的内容 如月index:2 对应要替换的QStringList: 01 02 A 04 05...
|
|
QMap<int,QMap<int,QString>> map;
|
|
}ItemReplaceInfo;
|
|
|
|
// 计数器1、2的source值
|
|
#define SOURCE_COUNTER1 "Counter1_QvQ"
|
|
#define SOURCE_COUNTER2 "Counter2_QvQ"
|
|
|
|
class TestPrintWidget : public QWidget
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
TestPrintWidget(QWidget* parent = nullptr);
|
|
~TestPrintWidget();
|
|
|
|
void on_buttonSelectFont_pressed();
|
|
void mergeFormatOnWordOrSelection(const QTextCharFormat &format);
|
|
void setFontFormat(int fontsize,QString fontfamily);
|
|
QTextEdit* getQTextEdit();
|
|
PicScene* getPicScene();
|
|
|
|
void getShowSelectItemText();
|
|
void bindSysPara(SysPara *sysPara);
|
|
|
|
void on_openfileButton_pressed();
|
|
|
|
void saveFile();
|
|
|
|
void on_KeyUp_clicked();
|
|
void on_KeyLeft_clicked();
|
|
void on_KeyRight_clicked();
|
|
void on_KeyDown_clicked();
|
|
|
|
void on_delButton_pressed();
|
|
|
|
void addDateTimeItem(const DateItemModel& model, const TextItemModel& textModel);
|
|
|
|
void addScheduleShiftsItem(QVector<ScheduleModel> schedules, TextItemModel txtModel);
|
|
|
|
void addCounterItem(CounterViewModel vm, QSharedPointer<QFont> font = nullptr);
|
|
|
|
QString currentFile();
|
|
|
|
bool addItemFlag;
|
|
// QString getReplateAfterStr(QString);
|
|
// QMap<int,QString> varReplaceItemMap;
|
|
|
|
QMap<int,ItemReplaceInfo> varReplaceItemMap;
|
|
public slots:
|
|
void on_enlargeButton_pressed();
|
|
void on_addButton_pressed(const SourceType type = SourceType::UNKNOWN);
|
|
void onEditItemDone();
|
|
|
|
void on_saveButton_pressed();
|
|
void onSaveASFile(QString filename,bool Flag);
|
|
|
|
void onFileOpen(QString filePath,bool insertFlag);
|
|
void onCreateSceneImage(QString filePath);//生成场景图片
|
|
|
|
void on_newfileButton_pressed();
|
|
|
|
void slt_BarCodeItemDone();
|
|
|
|
void selectNextItem();
|
|
|
|
void selectPreviousItem();
|
|
|
|
void onLineEditReturnPressed();
|
|
|
|
protected:
|
|
// 重写事件过滤器
|
|
bool eventFilter(QObject *watched, QEvent *event) override;
|
|
|
|
private slots:
|
|
void onSceneFocusedItemPosChanged(QPoint p);
|
|
void onBtn3DClicked();
|
|
void onImageLoaderAccepted();
|
|
void onBtnItemConfigClicked();
|
|
void onItemEditorAccepted();
|
|
|
|
void on_cbResolution_currentIndexChanged(int index);
|
|
|
|
void addDateItem();
|
|
|
|
void showBarcodeEditor(bool restoreVM = true);
|
|
|
|
void onBtnArrowClicked();
|
|
|
|
// 复制
|
|
void on_btn_copy_clicked();
|
|
|
|
// 粘贴
|
|
void on_btn_paste_clicked();
|
|
|
|
private:
|
|
// UI对象
|
|
Ui::TestPrintWidget ui;
|
|
SysPara* sysPara = nullptr;
|
|
|
|
// 控件成员变量(关联UI控件)
|
|
QButtonGroup* m_ButtonGroup;
|
|
QTextEdit* m_TextEdit = nullptr;
|
|
QLineEdit* m_LineEdit;
|
|
|
|
void parseVbfile(QXmlStreamReader &reader);
|
|
|
|
/**
|
|
* @brief 对 on_KeyUp_clicked 等按键事件的简便包装
|
|
*
|
|
* @param key
|
|
*/
|
|
void moveSelectedItem(Qt::Key key);
|
|
|
|
// 加载图标(保留原功能)
|
|
QPixmap loadIcon(const QString& iconName, const QSize& size = QSize(40, 40));
|
|
|
|
PicScene *pPicScene; //保存Item的Html
|
|
// PicScene *pPicScene2; // 保存Item的Html对应的图片 解决场景模式文本无法放大的问题
|
|
QGraphicsView *view;
|
|
QGraphicsView *pViewer;
|
|
PicTextItem *textItem;
|
|
PicTextItem *textItem2;
|
|
|
|
PicCodeItem *codeItem_Operation = nullptr;
|
|
|
|
// 修改条形码和二维码的标志
|
|
bool editCodeFlag = false;
|
|
|
|
QString xmlfileName;
|
|
DialogSaveFile *dialogSaveFile;
|
|
DialogFileOperation *dialogFileOperation;
|
|
|
|
ImageLoader *imageLoader = nullptr;
|
|
ItemEditor * itemEditor = nullptr;
|
|
BarcodeEditor m_barcodeEditor;
|
|
|
|
int editMode;
|
|
bool m_CreateImageFlag;
|
|
QGraphicsScene *m_pSavePicScene;
|
|
|
|
// 条形码和二维码的选择界面
|
|
void initSelecteCodeDlg();
|
|
// 在界面添加显示条形码和二维码的场景
|
|
void addCodeItem(QString str);
|
|
//寻找当前选中的图层,没有选中的就不继续处理
|
|
int checkSelectScene();
|
|
|
|
// 复制
|
|
int pasteTime = 1;
|
|
SourceType m_copiedSourceType = SourceType::UNKNOWN;
|
|
QVariant m_copiedSourceValue;
|
|
QXmlStreamAttributes m_copiedAttrs;
|
|
QString m_copiedHtml;
|
|
bool m_copiedSpecialConditions = false;
|
|
int m_copiedCatchCnt1StartValue = -1;
|
|
int m_copiedCatchCnt1CurrValue = -1;
|
|
int m_copiedCounterType = COUNTER_TYPE_1;
|
|
int m_copiedCounterDigitalNum = 1;
|
|
int m_copiedCounterLetterSpace = 1;
|
|
QString m_copiedCounterFontFamily = "Dinkie9";
|
|
QPointF m_copiedPos;
|
|
//判断要复制什么图层,添加该图层
|
|
PicTextItem* checkSelectItem(PicTextItem* srcItem);
|
|
|
|
//保存复制内容
|
|
bool cacheSelectedLayerForPaste(PicTextItem* srcItem);
|
|
|
|
//粘贴
|
|
void pasteCopiedLayer();
|
|
|
|
void selectItemByDirection(bool forward);
|
|
|
|
signals:
|
|
void sendButtonClickedSignal(int index);
|
|
void sendUpdateFontSignl(int);
|
|
|
|
void sig_showEditCounter(CounterViewModel viewModel);
|
|
|
|
// 用户请求打开日期类型图元编辑窗口时发送此信号
|
|
void sig_showEditDateTime(DateItemModel dateModel, TextItemModel textModel);
|
|
|
|
void sig_showScheduleShiftsEditor(QVector<ScheduleModel> schedules, TextItemModel txtModel);
|
|
};
|
|
|
|
#endif // TESTPRINTWIDGET_H
|