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
+9 -93
View File
@@ -8,6 +8,11 @@
#include "SysPara.h"
#include <QMap>
enum InkType {
INK_TYPE_BLACK,
INK_TYPE_WHITE,
};
/**
* @brief 计数器类型
*
@@ -22,13 +27,11 @@ enum COUNTER_TYPE {
*
*/
struct CounterViewModel {
int counterType = 0; // 实际类型为 COUNTER_TYPE
int digitalNum = 0;
int letterSpace = 0;
int counterType = COUNTER_TYPE_1; // 实际类型为 COUNTER_TYPE
int digitalNum = 2;
int letterSpace = 2;
int charWidth = 0; // 字符宽度,仅在 enbCustomCharWidth == true 时有意义
bool enbCustomCharWidth = false;
SysPara* m_sysPara = nullptr; // 计数器设置界面中还依赖此对象,所以先给它
};
Q_DECLARE_METATYPE(CounterViewModel);
@@ -53,91 +56,4 @@ struct DateItemModel {
Q_DECLARE_METATYPE(DateItemModel);
/**
* @brief 条码设置界面所用的视图模型
*
*/
class BarcodeViewModel : public QObject
{
Q_OBJECT
/**
* @brief 条形码内容模版 ,用于生成条形码
*
* @example "1234567890{t}{c}"
* @remark 条形码内容模版中可以包含计数器变量,例如 {t} 表示当前时间,{c} 表示当前计数器值
* @note 仅当条形码内容模版中包含日期变量或计数器变量时,属性 counterViewModel、dateViewModel 才会有意义
*/
Q_PROPERTY(QString contentPattern READ contentPattern WRITE setContentPattern NOTIFY contentPatternChanged)
/**
* @brief 计数器视图模型,用于填充条形码内容模版中的计数器变量
*
*/
Q_PROPERTY(CounterViewModel counterViewModel READ counterViewModel WRITE setCounterViewModel NOTIFY counterViewModelChanged)
/**
* @brief 日期视图模型,用于填充条形码内容模版中的日期变量
*
*/
Q_PROPERTY(DateItemModel dateViewModel READ dateViewModel WRITE setDateViewModel NOTIFY dateViewModelChanged)
public:
explicit BarcodeViewModel(QObject *parent = nullptr);
/**
* @brief 获取条形码内容模版
*
* @return QString
*/
QString contentPattern() const { return m_contentPattern; }
/**
* @brief 设置条形码内容模版
*
* @param contentPattern
*/
void setContentPattern(const QString& contentPattern);
/**
* @brief 获取用于合成条形码内容的所需的计数器视图模型
*
* @return CounterViewModel
*/
const CounterViewModel& counterViewModel() const { return m_counterViewModel; }
/**
* @brief 设置计数器视图模型
* @note 设置计数器视图模型后,总会触发 counterViewModelChanged 信号,因为该函数不负责检查计数器视图模型是否有更改
*
* @param counterViewModel
*/
void setCounterViewModel(CounterViewModel counterViewModel);
/**
* @brief 获取用于合成条形码内容的所需的日期视图模型
*
* @return DateItemModel
*/
const DateItemModel& dateViewModel() const { return m_dateViewModel; }
/**
* @brief 设置日期视图模型
* @note 设置日期视图模型后,总会触发 dateViewModelChanged 信号,因为该函数不负责检查日期视图模型是否有更改
*
* @param dateViewModel
*/
void setDateViewModel(DateItemModel dateViewModel);
signals:
void contentPatternChanged();
void counterViewModelChanged();
void dateViewModelChanged();
private:
QString m_contentPattern; // 条形码内容模版
CounterViewModel m_counterViewModel; // 计数器视图模型
DateItemModel m_dateViewModel; // 日期视图模型
};
#endif // VIEWMODELS_H
#endif // VIEWMODELS_H