0504合并前提交

This commit is contained in:
2026-05-04 08:29:44 +08:00
parent cf53cbae35
commit a06c926162
22 changed files with 2007 additions and 390 deletions
+87 -3
View File
@@ -4,9 +4,35 @@
#include <QDialog>
#include "ViewModels.h"
#include "SysPara.h"
#include "dlgQrcodeFormat.h"
#include "DlgBarcodeFormat.h"
#include <QVariant>
class DateFormatEditor;
class DateReplaceEditor;
class CounterEditor;
enum BarcodeType {
BARCODE_TYPE_BARCODE,
BARCODE_TYPE_QRCODE,
};
/**
* @brief 条码设置界面所用的视图模型
*
* @remark contentPattern 内可包含变量,如 {t} 表示日期/时间、{c} 表示计数器。
* 仅当 contentPattern 含有相应变量时,counterViewModel / dateViewModel 字段才有意义。
*/
struct BarcodeViewModel {
QString contentPattern; // 条形码内容模版,例如 "ABC{t}{c1}"
CounterViewModel counterViewModel; // 计数器视图模型
DateItemModel dateViewModel; // 日期视图模型
BarcodeType type = BARCODE_TYPE_BARCODE;
QVariant format;
};
Q_DECLARE_METATYPE(BarcodeViewModel);
namespace Ui {
class BarcodeEditor;
@@ -20,9 +46,34 @@ public:
explicit BarcodeEditor(QWidget *parent = nullptr);
~BarcodeEditor();
void bindViewModel(QSharedPointer<BarcodeViewModel> vm);
/**
* @brief 绑定系统参数
*
* 计数器配置选项卡所需的各个计数器的配置通过此方式提供;
* @note
* BarcodeEditor 将在 @see bindViewModel 中读取 sysPara->para.cnt1*** 或 sysPara->para.cnt2*** 相关参数,并在用户点击确认按钮时修改它们。
*
* @remark 沿用的是旧逻辑
*
* @param sysPara
*/
void bindSysPara(SysPara* sysPara) { m_sysPara = sysPara; }
QSharedPointer<BarcodeViewModel> viewModel() const;
/**
* @brief 注入条形码视图模型(纯结构体,按值拷贝)
*
* @param vm
*/
void bindViewModel(const BarcodeViewModel& vm);
/**
* @brief 获取当前视图模型
*
* @note 调用前会先从各子编辑器收集最新值回写到内部 m_vm,再返回。
*
* @return BarcodeViewModel
*/
BarcodeViewModel viewModel();
private slots:
@@ -51,13 +102,46 @@ private slots:
*/
void onBtnCounterClicked();
/**
* @brief 确定按钮点击时触发
*
*/
void onCheckBtnClicked();
/**
* @brief 取消按钮点击时触发
*
*/
void onCloseBtnClicked();
/**
* @brief 条形码格式确认时触发
*
*/
void onBarcodeFormatConfirmed();
/**
* @brief 二维码格式确认时触发
*
*/
void onQrcodeFormatConfirmed();
protected:
virtual bool eventFilter(QObject* obj, QEvent* event) override;
private:
Ui::BarcodeEditor *ui;
QSharedPointer<BarcodeViewModel> m_vm;
BarcodeViewModel m_vm;
DateFormatEditor *m_dateFormatEditor = nullptr;
DateReplaceEditor *m_dateReplaceEditor = nullptr;
CounterEditor *m_counterEditor = nullptr;
SysPara* m_sysPara = nullptr;
DlgBarcodeFormat m_barcodeFormatEditor;
DlgQrcodeFormat m_qrcodeFormatEditor;
};
#endif // BARCODEEDITOR_H