Files
VX5_KRO_GearPump/testprintwidget.h
T
2026-06-22 08:51:10 +08:00

231 lines
6.5 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 "DialogFontSize.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 createItemImage();
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 setFontNameIndex(float);
void addDateTimeItem(const DateItemModel& model, const TextItemModel& textModel);
void addScheduleShiftsItem(QVector<ScheduleModel> schedules, TextItemModel txtModel);
void addCounterItem(CounterViewModel vm, QSharedPointer<QFont> font = nullptr);
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 onEditItemCounterDone();
void onReplaceVarEditDone();
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 slt_QRCodeItemDone(QString str);
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;
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));
DialogFontSize *dialogFontSize;
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;
SelectCodeDlg* m_SelectCodeDlg = nullptr;
void onSceneAccepted(PicTextItem *pTextItem);
// 条形码和二维码的选择界面
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