From a18665b5f95eddc9fe46bb8ed655260b4fadaad7 Mon Sep 17 00:00:00 2001
From: kite_lucs <334054969@qq.com>
Date: Sat, 19 Sep 2026 08:16:46 +0800
Subject: [PATCH] =?UTF-8?q?hlp:=E6=9C=80=E5=A4=9A=E6=B7=BB=E5=8A=A0?=
=?UTF-8?q?=E4=B8=A4=E4=B8=AA=E8=AE=A1=E6=95=B0=E5=99=A8=EF=BC=8C=E7=BC=96?=
=?UTF-8?q?=E8=BE=91=E8=AE=A1=E6=95=B0=E5=99=A8=E5=9B=BE=E5=85=83=EF=BC=8C?=
=?UTF-8?q?=E5=8F=AA=E6=98=BE=E7=A4=BA=E5=BD=93=E5=89=8D=E8=AE=A1=E6=95=B0?=
=?UTF-8?q?=E5=99=A8=E7=9A=84=E4=BF=AE=E6=94=B9tab?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
CounterVarSet.cpp | 40 ++++++++++++++++++++++++++++++++++++----
CounterVarSet.h | 5 +++--
InkJetPrinter.cpp | 8 ++++----
InkJetPrinter.h | 2 +-
PrintTextDisplay.cpp | 3 ++-
chinese.ts | 14 ++++++++++++++
english.ts | 14 ++++++++++++++
farsi.ts | 14 ++++++++++++++
korean.ts | 14 ++++++++++++++
scene/PicCounterItem.cpp | 2 +-
spanish.ts | 14 ++++++++++++++
testprintwidget.cpp | 23 +++++++++++++++++++++--
testprintwidget.h | 4 +++-
thai.ts | 14 ++++++++++++++
turkey.ts | 14 ++++++++++++++
vena.ts | 14 ++++++++++++++
16 files changed, 183 insertions(+), 16 deletions(-)
diff --git a/CounterVarSet.cpp b/CounterVarSet.cpp
index acc850c..7c92447 100644
--- a/CounterVarSet.cpp
+++ b/CounterVarSet.cpp
@@ -91,7 +91,7 @@ void CounterVarSet::onDigitsChanged(int digits)
endValueBox->setValue(maxValue);
}
-void CounterVarSet::setCounterConfig(CounterViewModel viewModel)
+void CounterVarSet::setCounterConfig(CounterViewModel viewModel, bool isChange)
{
m_vm = viewModel;
@@ -101,7 +101,7 @@ void CounterVarSet::setCounterConfig(CounterViewModel viewModel)
ui->tabWidget->setCurrentIndex(viewModel.counterType == COUNTER_TYPE_1 ? 1 : 2);
ui->letterSpaceSpinBox->setValue(viewModel.letterSpace);
- updateSysParaToUI();
+ updateSysParaToUI(isChange);
}
void CounterVarSet::getValue(int *varType,int *digitalWidth,unsigned char *splitMode){
@@ -139,8 +139,10 @@ void CounterVarSet::applyUIPara()
m_vm.cnt2Settings.currValue = ui->spinBoxCnt2CurrValue->value();
}
-void CounterVarSet::updateSysParaToUI()
+void CounterVarSet::updateSysParaToUI(bool isChange)
{
+ handleChange(isChange);
+
ui->spinBoxCnt1EndValue->setValue(m_vm.cnt1Settings.endValue);
ui->spinBoxCnt1RepeateCnt->setValue(m_vm.cnt1Settings.repeatValue);
ui->spinBoxCnt1StartValue->setValue(m_vm.cnt1Settings.startValue);
@@ -154,6 +156,36 @@ void CounterVarSet::updateSysParaToUI()
ui->spinBoxCnt2CurrValue->setValue(m_vm.cnt2Settings.currValue);
}
+void CounterVarSet::handleChange(bool isChange)
+{
+ if (isChange) {
+ const bool useCnt1 = ui->radioButtonVar1->isChecked();
+ if (useCnt1) {
+ // 只显示 cnt1Tab
+ if (ui->tabWidget->indexOf(ui->cnt2Tab) >= 0)
+ ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->cnt2Tab));
+ if (ui->tabWidget->indexOf(ui->cnt1Tab) < 0)
+ ui->tabWidget->insertTab(1, ui->cnt1Tab, tr("计数器1"));
+
+ ui->tabWidget->setCurrentWidget(ui->cnt1Tab);
+ } else {
+ // 只显示 cnt2Tab
+ if (ui->tabWidget->indexOf(ui->cnt1Tab) >= 0)
+ ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->cnt1Tab));
+ if (ui->tabWidget->indexOf(ui->cnt2Tab) < 0)
+ ui->tabWidget->insertTab(1, ui->cnt2Tab, tr("计数器2"));
+
+ ui->tabWidget->setCurrentWidget(ui->cnt2Tab);
+ }
+ } else {
+ // 两个都显示
+ if (ui->tabWidget->indexOf(ui->cnt1Tab) < 0)
+ ui->tabWidget->insertTab(1, ui->cnt1Tab, tr("计数器1"));
+ if (ui->tabWidget->indexOf(ui->cnt2Tab) < 0)
+ ui->tabWidget->insertTab(2, ui->cnt2Tab, tr("计数器2"));
+ }
+}
+
void CounterVarSet::applyStyleSheet()
{
QString styleSheet =
@@ -353,4 +385,4 @@ void CounterVarSet::applyStyleSheet()
)";
this->setStyleSheet(styleSheet);
-}
\ No newline at end of file
+}
diff --git a/CounterVarSet.h b/CounterVarSet.h
index 1dfc910..44a4da4 100644
--- a/CounterVarSet.h
+++ b/CounterVarSet.h
@@ -25,14 +25,15 @@ public:
void applyStyleSheet();
void getValue(int *varType,int *digitalWidth,unsigned char *splitMode);
- void updateSysParaToUI(); //重载
+ void updateSysParaToUI(bool isChange); //重载
+ void handleChange(bool isChange);
void applyUIPara(); //重载
// 获取当前计数器配置:varType(7或8) 和 digitalNum(位数)
CounterViewModel getCounterConfig();
// 设置ui,用户编辑计数器item时,会调用此函数显示计数器的配置
- void setCounterConfig(CounterViewModel viewModel);
+ void setCounterConfig(CounterViewModel viewModel, bool isChange);
signals:
void sendButtonClickedSignal(int);
diff --git a/InkJetPrinter.cpp b/InkJetPrinter.cpp
index 249ef8b..9ec5a4f 100644
--- a/InkJetPrinter.cpp
+++ b/InkJetPrinter.cpp
@@ -187,7 +187,7 @@ void InkJetPrinter::init()
m_PrintSetting->updateModelToUI();
m_SystemSetting->updateSysParaToUI();
m_OtherInfo->updateSysParaToUI();
- m_CounterVarSet->updateSysParaToUI();
+ m_CounterVarSet->updateSysParaToUI(false);
m_SystemManage->loadKeyBoardType();
@@ -256,11 +256,11 @@ void InkJetPrinter::init()
}
// type 1,2: 分别显示计数器1或2的界面
-void InkJetPrinter::slt_editCounter(CounterViewModel vm)
+void InkJetPrinter::slt_editCounter(CounterViewModel vm, bool isChange)
{
if (m_CounterVarSet) {
- m_CounterVarSet->updateSysParaToUI();
- m_CounterVarSet->setCounterConfig(vm);
+// m_CounterVarSet->updateSysParaToUI(isChange);
+ m_CounterVarSet->setCounterConfig(vm,isChange);
m_StackedWidget->setCurrentWidget(m_CounterVarSet);
}
}
diff --git a/InkJetPrinter.h b/InkJetPrinter.h
index 6c6fc91..42f58c4 100644
--- a/InkJetPrinter.h
+++ b/InkJetPrinter.h
@@ -234,7 +234,7 @@ private slots:
void OnFinished(int event);
- void slt_editCounter(CounterViewModel vm);
+ void slt_editCounter(CounterViewModel vm, bool isChange);
// 保养警告
void slt_warningMaintenance();
diff --git a/PrintTextDisplay.cpp b/PrintTextDisplay.cpp
index 9e8be6c..8b268a4 100644
--- a/PrintTextDisplay.cpp
+++ b/PrintTextDisplay.cpp
@@ -296,7 +296,8 @@ void PrintTextDisplay::paintEvent(QPaintEvent *event){
if(val>base-1)jmin=Num-j-1;
base *= 10;
}
- str= QString("%1").arg(val%base,Num,10,QLatin1Char('0'))+str;
+ int r = (base != 0) ? (val % base) : 0;
+ str= QString("%1").arg(r,Num,10,QLatin1Char('0'))+str;
}
diff --git a/chinese.ts b/chinese.ts
index 6df7879..d8267d9 100644
--- a/chinese.ts
+++ b/chinese.ts
@@ -193,12 +193,16 @@
+
+
计数器1
+
+
计数器2
@@ -5958,6 +5962,16 @@ p, li { white-space: pre-wrap; }
是否保存文件?
+
+
+ 警告
+
+
+
+
+ 无法创建更多计数器
+
+
TimeSettingDialog
diff --git a/english.ts b/english.ts
index 6df7879..d8267d9 100644
--- a/english.ts
+++ b/english.ts
@@ -193,12 +193,16 @@
+
+
计数器1
+
+
计数器2
@@ -5958,6 +5962,16 @@ p, li { white-space: pre-wrap; }
是否保存文件?
+
+
+ 警告
+
+
+
+
+ 无法创建更多计数器
+
+
TimeSettingDialog
diff --git a/farsi.ts b/farsi.ts
index 6df7879..d8267d9 100644
--- a/farsi.ts
+++ b/farsi.ts
@@ -193,12 +193,16 @@
+
+
计数器1
+
+
计数器2
@@ -5958,6 +5962,16 @@ p, li { white-space: pre-wrap; }
是否保存文件?
+
+
+ 警告
+
+
+
+
+ 无法创建更多计数器
+
+
TimeSettingDialog
diff --git a/korean.ts b/korean.ts
index 260e27c..b960d80 100644
--- a/korean.ts
+++ b/korean.ts
@@ -201,12 +201,16 @@
+
+
计数器1
카운터1
+
+
计数器2
카운터2
@@ -11351,6 +11355,16 @@ configuration.
是否保存文件?
파일을 저장하시겠습니까?
+
+
+ 警告
+ 경고
+
+
+
+ 无法创建更多计数器
+ 더 이상 카운터를 생성할 수 없습니다
+
TextEditOption
diff --git a/scene/PicCounterItem.cpp b/scene/PicCounterItem.cpp
index 4017e52..7278555 100644
--- a/scene/PicCounterItem.cpp
+++ b/scene/PicCounterItem.cpp
@@ -125,7 +125,7 @@ void PicCounterItem::setCustomAttrs(const QXmlStreamAttributes &attrs)
ok = false;
int displayNum = displayNumRef.toInt(&ok);
- if(!ok || displayNum <= 0) {
+ if(!ok /*|| displayNum <= 0*/) {
qWarning() << "Invalied counter display number: " << displayNum;
return;
}
diff --git a/spanish.ts b/spanish.ts
index 6df7879..d8267d9 100644
--- a/spanish.ts
+++ b/spanish.ts
@@ -193,12 +193,16 @@
+
+
计数器1
+
+
计数器2
@@ -5958,6 +5962,16 @@ p, li { white-space: pre-wrap; }
是否保存文件?
+
+
+ 警告
+
+
+
+
+ 无法创建更多计数器
+
+
TimeSettingDialog
diff --git a/testprintwidget.cpp b/testprintwidget.cpp
index b247db6..e3c9d1d 100644
--- a/testprintwidget.cpp
+++ b/testprintwidget.cpp
@@ -146,7 +146,7 @@ TestPrintWidget::TestPrintWidget(QWidget* parent)
vm.letterSpace = 1;
vm.cnt1Settings = m_printSettingModel.cnt1Settings;
vm.cnt2Settings = m_printSettingModel.cnt2Settings;
- emit sig_showEditCounter(vm);
+ emit sig_showEditCounter(vm, false);
});
connect(ui.btnBarcode, &QPushButton::clicked, [this](){
@@ -715,7 +715,7 @@ void TestPrintWidget::onBtnItemConfigClicked()
vm.charWidth = counterItem->charWidth();
vm.cnt1Settings = m_printSettingModel.cnt1Settings;
vm.cnt2Settings = m_printSettingModel.cnt2Settings;
- emit sig_showEditCounter(vm);
+ emit sig_showEditCounter(vm, true);
}
return;
}
@@ -1050,6 +1050,12 @@ void TestPrintWidget::addCounterItem(CounterViewModel vm, QSharedPointer
}
}
+ // 最多两个计数器
+ if (getCounterNum() >= 2 && !flag) {
+ QMessageBox::warning(this, tr("警告"),tr("无法创建更多计数器"));
+ return;
+ }
+
QVector currVals{vm.cnt1Settings.currValue, vm.cnt2Settings.currValue};
QFont font;
@@ -1100,6 +1106,19 @@ void TestPrintWidget::addCounterItem(CounterViewModel vm, QSharedPointer
updateCountersCurrVal(currVals);
}
+int TestPrintWidget::getCounterNum()
+{
+ int count = 0;
+ const QList items = pPicScene->items();
+ for (QGraphicsItem *it : items) {
+ if (auto *counter = dynamic_cast(it)) {
+ Q_UNUSED(counter);
+ ++count;
+ }
+ }
+ return count;
+}
+
QString TestPrintWidget::currentFile()
{
return xmlfileName;
diff --git a/testprintwidget.h b/testprintwidget.h
index f1163d0..9cbbbe0 100644
--- a/testprintwidget.h
+++ b/testprintwidget.h
@@ -58,6 +58,8 @@ public:
void addCounterItem(CounterViewModel vm, QSharedPointer font = nullptr);
+ int getCounterNum();
+
QString currentFile();
// 更新编辑界面内所有计数器的当前值
@@ -176,7 +178,7 @@ signals:
void sendButtonClickedSignal(int index);
- void sig_showEditCounter(CounterViewModel viewModel);
+ void sig_showEditCounter(CounterViewModel viewModel, bool isChange);
// 用户请求打开日期类型图元编辑窗口时发送此信号
void sig_showEditDateTime(DateItemModel dateModel, TextItemModel textModel);
diff --git a/thai.ts b/thai.ts
index 6df7879..d8267d9 100644
--- a/thai.ts
+++ b/thai.ts
@@ -193,12 +193,16 @@
+
+
计数器1
+
+
计数器2
@@ -5958,6 +5962,16 @@ p, li { white-space: pre-wrap; }
是否保存文件?
+
+
+ 警告
+
+
+
+
+ 无法创建更多计数器
+
+
TimeSettingDialog
diff --git a/turkey.ts b/turkey.ts
index 6df7879..d8267d9 100644
--- a/turkey.ts
+++ b/turkey.ts
@@ -193,12 +193,16 @@
+
+
计数器1
+
+
计数器2
@@ -5958,6 +5962,16 @@ p, li { white-space: pre-wrap; }
是否保存文件?
+
+
+ 警告
+
+
+
+
+ 无法创建更多计数器
+
+
TimeSettingDialog
diff --git a/vena.ts b/vena.ts
index 6df7879..d8267d9 100644
--- a/vena.ts
+++ b/vena.ts
@@ -193,12 +193,16 @@
+
+
计数器1
+
+
计数器2
@@ -5958,6 +5962,16 @@ p, li { white-space: pre-wrap; }
是否保存文件?
+
+
+ 警告
+
+
+
+
+ 无法创建更多计数器
+
+
TimeSettingDialog