diff --git a/.gitignore b/.gitignore index 5d38cba..8934108 100644 --- a/.gitignore +++ b/.gitignore @@ -65,3 +65,8 @@ K(bypm0718wx) QtUI.r666 qt4 QtUI.r668 +2varRam.png +3varRam.png +800X600_New_SystemProject-_NewInterface.zip +bnsTest.png +printSceneView.png diff --git a/800X600_New_SystemProject-_NewInterface.zip b/800X600_New_SystemProject-_NewInterface.zip deleted file mode 100644 index 5fa7cd1..0000000 Binary files a/800X600_New_SystemProject-_NewInterface.zip and /dev/null differ diff --git a/CounterVarSet.cpp b/CounterVarSet.cpp index 03d696c..351e1e1 100644 --- a/CounterVarSet.cpp +++ b/CounterVarSet.cpp @@ -45,14 +45,14 @@ void CounterVarSet::bindTxTEdit(QTextEdit* textEdit){ void CounterVarSet::buttonClickedSlot() { // 编辑 -// if (editFlag) { -// m_textEdit->clear(); -// on_buttonInsertVari_pressed(); -// applyUIPara(); -// emit sig_updateSelectedCounter(); -// editFlag = false; -// return; -// } + // if (editFlag) { + // m_textEdit->clear(); + // on_buttonInsertVari_pressed(); + // applyUIPara(); + // emit sig_updateSelectedCounter(); + // editFlag = false; + // return; + // } // 添加 QPushButton* btn = qobject_cast(sender()); @@ -236,114 +236,148 @@ QString CounterVarSet::getFamilyName(int fontsize){ void CounterVarSet::applyStyleSheet() { - QString styleSheet = R"( - QPushButton#closeBtn, QPushButton#checkBtn{ - background-color: #E6F7FF; - border: 1px solid #87CEEB; - border-radius: 4px; - font-size: 24px; - color: #228B22; - } - QPushButton#closeBtn:hover,QPushButton#checkBtn:hover{ - background-color: #D1E9FF; - } + QString styleSheet = + R"( + QPushButton#closeBtn, QPushButton#checkBtn{ + background-color: #E6F7FF; + border: 1px solid #87CEEB; + border-radius: 4px; + font-size: 24px; + color: #228B22; + } + QPushButton#closeBtn:hover,QPushButton#checkBtn:hover{ + background-color: #D1E9FF; + } - QPushButton#closeBtn:pressed,QPushButton#checkBtn:pressed{ - background-color: #BAE7FF; - } + QPushButton#closeBtn:pressed,QPushButton#checkBtn:pressed{ + background-color: #BAE7FF; + } - QPushButton { - background-color: #5396C1; - color: #ffffff; - border: 1px solid #000000; - border-radius: 3px; - font-size: 18px; - font-weight:500; - width: 180px; - height: 90px; - } + QPushButton { + background-color: #5396C1; + color: #ffffff; + border: 1px solid #000000; + border-radius: 3px; + font-size: 18px; + font-weight:500; + width: 180px; + height: 90px; + } - QPushButton:hover { - background-color: #5396C1; - } + QPushButton:hover { + background-color: #5396C1; + } - QPushButton:disabled { - background-color: #7C828E; - color: #606060; - border-color: #808080; - } + QPushButton:disabled { + background-color: #7C828E; + color: #606060; + border-color: #808080; + } - QComboBox { - border: 1px solid #000000; - border-radius: 3px; - font-size: 14px; - width: 180px; - height: 90px; - padding-left: 10px; /* 文字左边距,避免紧贴边缘 */ - } + QComboBox { + border: 1px solid #000000; + border-radius: 3px; + font-size: 14px; + width: 180px; + height: 90px; + padding-left: 10px; /* 文字左边距,避免紧贴边缘 */ + } - /* 下拉箭头区域 */ - QComboBox::drop-down { - border: 1px solid #333333; - border-radius: 3px; - width: 30px; /* 箭头区域宽度 */ - background-color: #5396C1; - } + /* 下拉箭头区域 */ + QComboBox::drop-down { + border: 1px solid #333333; + border-radius: 3px; + width: 30px; /* 箭头区域宽度 */ + background-color: #5396C1; + } - /* 下拉箭头图标 */ - QComboBox::down-arrow { - image: url(image/down_white.png); - width: 16px; /* 图标显示宽度 */ - height: 16px; /* 图标显示高度 */ - } + /* 下拉箭头图标 */ + QComboBox::down-arrow { + image: url(image/down_white.png); + width: 16px; /* 图标显示宽度 */ + height: 16px; /* 图标显示高度 */ + } - /* 悬停状态 */ - QComboBox:hover { - background-color: #efefef; - } + /* 悬停状态 */ + QComboBox:hover { + background-color: #efefef; + } - // 下拉框 - QComboBox QAbstractItemView { - border: 1px solid #000000; - border-radius: 3px; - font-size: 14px; - selection-background-color: #5396C1; /* 选中项背景色(稍深) */ - selection-color: #ffffff; - } + QComboBox QAbstractItemView { + border: 1px solid #000000; + border-radius: 3px; + font-size: 14px; + selection-background-color: #5396C1; /* 选中项背景色(稍深) */ + selection-color: #ffffff; + } - QSpinBox::down-button { - width: 23px; /* 图标显示宽度 */ - height: 23px; /* 图标显示高度 */ - border: 1px solid #333333; - border-radius: 3px; - background-color: #5396C1; - } + QSpinBox::down-button { + width: 23px; /* 图标显示宽度 */ + height: 23px; /* 图标显示高度 */ + border: 1px solid #333333; + border-radius: 3px; + background-color: #5396C1; + } - QSpinBox::down-arrow { - image: url(image/down_white.png); - height: 18px; - width: 18px; - } + QSpinBox::down-arrow { + image: url(image/down_white.png); + height: 18px; + width: 18px; + } - QSpinBox::up-button { - width: 23px; /* 图标显示宽度 */ - height: 23px; /* 图标显示高度 */ - border: 1px solid #333333; - border-radius: 3px; - background-color: #5396C1; - } + QSpinBox::up-button { + width: 23px; /* 图标显示宽度 */ + height: 23px; /* 图标显示高度 */ + border: 1px solid #333333; + border-radius: 3px; + background-color: #5396C1; + } - QSpinBox::up-arrow { - image: url(image/up_white.png); - height: 18px; - width: 18px; - } + QSpinBox::up-arrow { + image: url(image/up_white.png); + height: 18px; + width: 18px; + } - QSpinBox { - border: 1px solid #333333; - } + QSpinBox { + border: 1px solid #333333; + } - )"; + QTabWidget { + border: none; + background-color: #7B838E; + } + + QTabBar::tab { + margin-top: -3px; + min-width: 90px; + min-height: 45px; + padding: 4px 10px; + margin-right: 4px; + border: 1px solid #dddddd; + border-bottom: none; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + background-color: #5396C1; + color: #ffffff; + } + + QTabWidget::tab-bar { + top: -3px; + left: 10px; + } + + QTabBar::tab:focus { + outline: none; + } + + QTabBar::tab:selected { + background-color: #6bb1e0; + color: #ffffff; + box-shadow: 0 -3px 8px rgba(44, 125, 232, 0.25); + } + + )"; this->setStyleSheet(styleSheet); } @@ -373,12 +407,12 @@ void CounterVarSet::on_pushOnlyCNT2Clear_pressed() } void CounterVarSet::initReplaceValue(){ -// dataList.clear(); -// dataList << "0" << "1" << "2" << "3" << "4" << "5" << "6" << "7" -// << "8" << "9" << "A" << "B" << "C" << "D" << "E" << "F"; + // dataList.clear(); + // dataList << "0" << "1" << "2" << "3" << "4" << "5" << "6" << "7" + // << "8" << "9" << "A" << "B" << "C" << "D" << "E" << "F"; -// if(ui->comboBox_2->currentIndex() == 0) //index 0 --- 数据 -// loadDataShow(); + // if(ui->comboBox_2->currentIndex() == 0) //index 0 --- 数据 + // loadDataShow(); } //void CounterVarSet::loadDataShow(){ diff --git a/DateVarSet.cpp b/DateVarSet.cpp index 7f4144e..ab79292 100644 --- a/DateVarSet.cpp +++ b/DateVarSet.cpp @@ -16,23 +16,6 @@ DateVarSet::DateVarSet(QWidget *parent) : digitWidth = 4; - //connect(ui->radioButtonCurDate,SIGNAL(toggled(bool)),this,SLOT( slt_handleDigits())); - //connect(ui->radioButtonExpiry,SIGNAL(toggled(bool)),this,SLOT( slt_handleDigits())); - // connect(ui->radioButtonVarRandom,SIGNAL(toggled(bool)),this,SLOT(onRanDomPressed(bool))); - //connect(ui->radioButtonHour,SIGNAL(toggled(bool)),this,SLOT( slt_handleDigits())); - // connect(ui->radioButtonMinute,SIGNAL(toggled(bool)),this,SLOT( slt_handleDigits())); - // connect(ui->radioButtonWeek,SIGNAL(toggled(bool)),this,SLOT( slt_handleDigits())); - // connect(ui->radioButtonMonth,SIGNAL(toggled(bool)),this,SLOT( slt_handleDigits())); - // connect(ui->radioButtonSecond,SIGNAL(toggled(bool)),this,SLOT( slt_handleDigits())); - // connect(ui->radioButtonDay,SIGNAL(toggled(bool)),this,SLOT( slt_handleDigits())); - // // connect(ui->radioButtonXDay,SIGNAL(toggled(bool)),this,SLOT( slt_handleDigits())); - // connect(ui->radioButtonYear,SIGNAL(toggled(bool)),this,SLOT( slt_handleDigits())); - // connect(ui->radioButtonVar1,SIGNAL(toggled(bool)),this,SLOT( onDigitFourBit(bool))); - // connect(ui->radioButtonVar2,SIGNAL(toggled(bool)),this,SLOT( onDigitFourBit(bool))); - // connect(ui->radioButtonCNT3,SIGNAL(toggled(bool)),this,SLOT( onDigitFourBit(bool))); - - //ui->radioButtonXDay->hide(); - varTypeSet = 0; varHtmlStr = ""; @@ -45,6 +28,8 @@ DateVarSet::DateVarSet(QWidget *parent) : layout->addWidget(m_generalSettings); ui->generalTab->setLayout(layout); + applyStyleSheet(); + init(); initReplaceValue(); @@ -52,7 +37,6 @@ DateVarSet::DateVarSet(QWidget *parent) : void DateVarSet::init() { - applyStyleSheet(); // 连接信号槽 connect(ui->checkBtn, &QPushButton::clicked, this, &DateVarSet::buttonClickedSlot); connect(ui->closeBtn,&QPushButton::clicked, this, &DateVarSet::buttonClickedSlot); @@ -82,6 +66,17 @@ void DateVarSet::init() connect(ui->lineEdit_Replace4, &QLineEdit::textChanged, std::bind(&DateVarSet::onLineEditReplaceChanged, this, 3, std::placeholders::_1)); } +void DateVarSet::initUI() +{ + if (m_generalSettings) + m_generalSettings->initUI(); + + ui->lineEdit_DateFormat->setText(""); + ui->expirationCBox->setCurrentIndex(0); + ui->expirationNumCBox->setValue(0); + ui->cb_replaceType->setCurrentIndex(0); +} + void DateVarSet::initReplaceValue(){ monthList.clear(); for (int i = 1; i <= 12; ++i) { @@ -265,7 +260,7 @@ void DateVarSet::on_buttonInsertVari_pressed() fontname = "Dinkie9"; if(m_generalSettings->currentItem()) { fontname = m_generalSettings->font().family(); - } + } else { font.setFamily(fontname); @@ -308,7 +303,7 @@ void DateVarSet::on_buttonInsertVari_pressed() m_textEdit->insertHtml(QString("") .arg(varType).arg(false && (pixelSize<=16)?(digitalNum*100 + 75):digitalNum) .arg(height+1).arg(width*digitalNum).arg(varType1)); //插入索引后 - qDebug() << m_textEdit->toHtml(); + qDebug() << m_textEdit->toHtml(); } // 普通变量 VarType<=8 else if(varType ==EXPIRYDATE){ //80 :/80/image/expiryDate8.bmp qrc:/80/image/expiryDate875.bmp // QImage img; @@ -513,6 +508,8 @@ void DateVarSet::setDateModel(const DateItemModel &model) } loadMonthShow(); + + ui->tabWidget->setCurrentIndex(1); } void DateVarSet::useReplaceInsertVar(){ @@ -527,83 +524,111 @@ QString DateVarSet::getFamilyName(int fontsize){ void DateVarSet::applyStyleSheet() { - QString styleSheet = - R"( + QString styleSheet = + R"( + QPushButton#closeBtn, QPushButton#checkBtn{ + background-color: #E6F7FF; + border: 1px solid #87CEEB; + border-radius: 4px; + font-size: 24px; + color: #228B22; + } + QPushButton#closeBtn:hover,QPushButton#checkBtn:hover{ + background-color: #D1E9FF; + } - QPushButton#closeBtn, QPushButton#checkBtn{ - background-color: #E6F7FF; - border: 1px solid #87CEEB; - border-radius: 4px; - font-size: 24px; - color: #228B22; - } - QPushButton#closeBtn:hover,QPushButton#checkBtn:hover{ - background-color: #D1E9FF; - } + QPushButton#closeBtn:pressed,QPushButton#checkBtn:pressed{ + background-color: #BAE7FF; + } - QPushButton#closeBtn:pressed,QPushButton#checkBtn:pressed{ - background-color: #BAE7FF; - } + QPushButton { + background-color: #5396C1; + color: #ffffff; + border: 1px solid #000000; + border-radius: 3px; + font-size: 18px; + font-weight:500; + width: 180px; + height: 90px; + } - QPushButton { - background-color: #5396C1; - color: #ffffff; - border: 1px solid #000000; - border-radius: 3px; - font-size: 18px; - font-weight:500; - width: 180px; - height: 90px; - } + QPushButton:hover { + background-color: #5396C1; + } - QPushButton:hover { - background-color: #5396C1; - } + QPushButton:disabled { + background-color: #7C828E; + color: #606060; + border-color: #808080; + } - QPushButton:disabled { - background-color: #7C828E; - color: #606060; - border-color: #808080; - } + QComboBox { + border: 1px solid #000000; + border-radius: 3px; + font-size: 14px; + width: 180px; + height: 90px; + padding-left: 10px; /* 文字左边距,避免紧贴边缘 */ + } - QComboBox { - border: 1px solid #000000; - border-radius: 3px; - font-size: 14px; - width: 180px; - height: 90px; - padding-left: 10px; /* 文字左边距,避免紧贴边缘 */ - } + /* 下拉箭头区域 */ + QComboBox::drop-down { + border: 1px solid #333333; + border-radius: 3px; + width: 30px; /* 箭头区域宽度 */ + background-color: #5396C1; + } - /* 下拉箭头区域 */ - QComboBox::drop-down { - border: 1px solid #333333; - border-radius: 3px; - width: 30px; /* 箭头区域宽度 */ - background-color: #5396C1; - } + /* 下拉箭头图标 */ + QComboBox::down-arrow { + image: url(image/down_white.png); + width: 16px; /* 图标显示宽度 */ + height: 16px; /* 图标显示高度 */ + } - /* 下拉箭头图标 */ - QComboBox::down-arrow { - image: url(image/down_white.png); - width: 16px; /* 图标显示宽度 */ - height: 16px; /* 图标显示高度 */ - } + /* 悬停状态 */ + QComboBox:hover { + background-color: #efefef; + } - /* 悬停状态 */ - QComboBox:hover { - background-color: #efefef; - } + QComboBox QAbstractItemView { + border: 1px solid #000000; + border-radius: 3px; + font-size: 14px; + selection-background-color: #5396C1; /* 选中项背景色(稍深) */ + selection-color: #ffffff; + } - // 下拉框 - QComboBox QAbstractItemView { - border: 1px solid #000000; - border-radius: 3px; - font-size: 14px; - selection-background-color: #5396C1; /* 选中项背景色(稍深) */ - selection-color: #ffffff; - } - )"; + QTabWidget { + border: none; + background-color: #7B838E; + } + + QTabBar::tab { + min-width: 90px; + min-height: 45px; + padding: 4px 10px; + margin-right: 4px; + border: 1px solid #dddddd; + border-bottom: none; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + background-color: #5396C1; + color: #ffffff; + } + + QTabWidget::tab-bar { + top: -3px; + left: 10px; + } + + QTabBar::tab:selected { + background-color: #6bb1e0; + color: #ffffff; + box-shadow: 0 -3px 8px rgba(44, 125, 232, 0.25); + } + + )"; this->setStyleSheet(styleSheet); } diff --git a/DateVarSet.h b/DateVarSet.h index 8bcd828..b496a04 100644 --- a/DateVarSet.h +++ b/DateVarSet.h @@ -27,7 +27,9 @@ public: void init(); - void applyStyleSheet(); + void initUI(); + +// void applyStyleSheet(); void bindSysPara(SysPara *sysPara); @@ -118,6 +120,8 @@ private: int currPage; QXmlStreamAttributes m_backup; + + void applyStyleSheet(); // 应用样式表 }; #endif // DATEVARSET_H diff --git a/ImageLoader.ui b/ImageLoader.ui index f1a7b41..c106928 100644 --- a/ImageLoader.ui +++ b/ImageLoader.ui @@ -160,9 +160,7 @@ background-color: #E6F7FF; border: 1px solid #87CEEB; border-radius: 4px; - min-width: 60px; - min-height: 40px; - font-size: 36px; + font-size: 24px; font-family: "Ubuntu"; color: #228B22; } diff --git a/InkJetPrinter.cpp b/InkJetPrinter.cpp index fac1762..ac5e920 100644 --- a/InkJetPrinter.cpp +++ b/InkJetPrinter.cpp @@ -118,7 +118,6 @@ void InkJetPrinter::init() connect(m_SystemSetting,&SystemSetting::sendButtonClickedSignal,this,&InkJetPrinter::getSystemSettingWidgetButtonClickSlot); connect(m_OtherInfo,&OtherInfo::sendButtonClickedSignal,this,&InkJetPrinter::getOtherInfoWidgetButtonClickSlot); connect(m_LogInfo,&LogInfo::sendButtonClickedSignal,this,&InkJetPrinter::getLogInfoWidgetButtonClickSlot); - connect(m_LogInfo,&LogInfo::sig_updateGeneralState,this,&InkJetPrinter::slt_updateGeneralState); connect(m_DateVarSet,&DateVarSet::sendButtonClickedSignal,this,&InkJetPrinter::getDateSetWidgetButtonClickSlot); //添加计数器,修改计数器 @@ -140,12 +139,20 @@ void InkJetPrinter::init() connect(m_TestPrintWidget, &TestPrintWidget::sig_showEditCounter, this, &InkJetPrinter::slt_editCounter); + // 状态界面 + if (ctrl_loginfo == nullptr) ctrl_loginfo = LogInfoCtrl::instance(); + connect(ctrl_loginfo, &LogInfoCtrl::sig_show, this, [=](){ + getMainWidgetButtonClickedSlot(5); + m_LogInfo->checkState(); + }); + SysPara *para = new SysPara(); bindSysPara(para); m_MainWidget->bindSysPara(para); m_FontSetWidget->bindSysPara(para); m_PrintSetting->bindSysPara(para); m_SystemManage->bindSysPara(para); + m_SystemUpdate->bindSysPara(para); m_SystemSetting->bindSysPara(para); m_OtherInfo->bindSysPara(para); m_TestPrintWidget->bindSysPara(para); @@ -153,7 +160,8 @@ void InkJetPrinter::init() m_CounterVarSet->bindSysPara(para); m_MainInstruction->bindSysPara(para); m_BarCodeDlg->bindSysPara(para); - m_QRCodeDlg->setSysPara(para); + m_QRCodeDlg->bindSysPara(para); + m_LogInfo->bindSysPara(para); if(sysPara->para.gearPumpEnable) pushButtonStartFlag = true; @@ -719,8 +727,8 @@ void InkJetPrinter::timerHandler(void){ // byons: 改到往下一百行左右的位置了 byons@2026年4月11日 // 用于刷新时间类型 byons@2026年4月10日 // 现在只用于更新界面,给人看的,因此理论延迟1秒左右,实际受系统用量影响可能会更慢 - if(m_StackedWidget->currentWidget() == m_MainWidget) - m_MainWidget->onPreviewScene(); + // if(m_StackedWidget->currentWidget() == m_MainWidget) + // m_MainWidget->onPreviewScene(); // end by byons@2026年4月10日 } @@ -831,20 +839,24 @@ void InkJetPrinter::timerHandler(void){ } // byons: 时间类型图元更新 @2026年4月11日 - if(sysPara->status.isPrinting) { + if (m_MainWidget->dateTimeItemsDotUpdate()) { + // // 统计追踪更新频率 + // static QElapsedTimer bnsTimer; + // static int toogleCount = 0; + // ++toogleCount; + // if(toogleCount > 10) { + // auto elapsed = bnsTimer.restart(); + // qDebug() << (QString("timeHandler avg elapsed: %1 s").arg(elapsed / qreal(toogleCount) / 1000.0)); + // toogleCount = 0; + // } - // 统计追踪更新频率 - static QElapsedTimer bnsTimer; - static int toogleCount = 0; - ++toogleCount; - if(toogleCount > 10) { - auto elapsed = bnsTimer.restart(); - qDebug() << (QString("timeHandler avg elapsed: %1 s").arg(elapsed / qreal(toogleCount) / 1000.0)); - toogleCount = 0; + if(sysPara->status.isPrinting) { + m_MainWidget->SendPrintDataToFpga(0); } - if (m_MainWidget->dateTimeItemsDotUpdate()) - m_MainWidget->SendPrintDataToFpga(0); + if(m_StackedWidget->currentWidget() == m_MainWidget) { + m_MainWidget->updatePrintDisplayLabel(); + } } // if (modbus->getModbusStatus() == 1) { @@ -1130,6 +1142,7 @@ void InkJetPrinter::timerHandler(void){ static bool read_flag = false; if((widget == m_MainWidget || widget == m_LogInfo) && pulse_100ms) { m_MainWidget->updateSysStatusToUI(); + m_MainWidget->updateGeneralState(m_MainWidget->alarmStatus); m_LogInfo->updateSysStatusToUI(m_MainWidget->alarmStatus); } /* @@ -1561,11 +1574,14 @@ void InkJetPrinter::getTestPrintWidgetButtonClickedSlot(int index) void InkJetPrinter::openDatetimeEditor(PicDateItem* item) { + m_DateVarSet->initUI(); m_DateVarSet->initReplaceValue(); if(item) { m_DateVarSet->edit(item); } + else + m_DateVarSet->setDateModel(DateItemModel::createDefaultReplaceModel()); m_StackedWidget->setCurrentWidget(m_DateVarSet); } @@ -1758,13 +1774,6 @@ void InkJetPrinter::getLogInfoWidgetButtonClickSlot(int index){ } } -void InkJetPrinter::slt_updateGeneralState(DevStatusLightType type, QString stateStr) -{ - if (m_MainWidget) { - m_MainWidget->updateGeneralState(type, stateStr); - } -} - void InkJetPrinter::getDateSetWidgetButtonClickSlot(int index){ switch (index) { diff --git a/InkJetPrinter.h b/InkJetPrinter.h index acc07cd..7cac311 100644 --- a/InkJetPrinter.h +++ b/InkJetPrinter.h @@ -57,9 +57,10 @@ private: MainWidget* m_MainWidget; TestPrintWidget* m_TestPrintWidget; - QBarCode* m_BarCodeDlg = nullptr; - dlgQrCode* m_QRCodeDlg = nullptr; -// MainInterfaceWidget* m_MainInterfaceWidget; + QBarCode* m_BarCodeDlg __attribute__((deprecated("Use BarcodeEditor instead"))) = nullptr; + + dlgQrCode* m_QRCodeDlg __attribute__((deprecated("Use BarcodeEditor instead"))) = nullptr; + SystemManage* m_SystemManage; SystemUpdate* m_SystemUpdate; SystemSetting* m_SystemSetting; @@ -72,6 +73,7 @@ private: MainInstruction* m_MainInstruction; LogInfo* m_LogInfo; + LogInfoCtrl* ctrl_loginfo = nullptr; ScheduleShiftsEditor* m_scheduleShiftsEditor = nullptr; @@ -123,7 +125,6 @@ private slots: void getSystemSettingWidgetButtonClickSlot(int index); void getOtherInfoWidgetButtonClickSlot(int index); void getLogInfoWidgetButtonClickSlot(int index); - void slt_updateGeneralState(DevStatusLightType type, QString stateStr); void getDateSetWidgetButtonClickSlot(int index); void getCounterVarSetWidgetButtonClickSlot(int index); void slt_counterVarUpdate(); diff --git a/ItemEditor.ui b/ItemEditor.ui index 8af793b..51a0282 100644 --- a/ItemEditor.ui +++ b/ItemEditor.ui @@ -86,8 +86,8 @@ - 62 - 42 + 100 + 40 diff --git a/LogInfo.cpp b/LogInfo.cpp index fd790af..0c03a8a 100644 --- a/LogInfo.cpp +++ b/LogInfo.cpp @@ -13,7 +13,7 @@ #include #ifndef LOGINFOFILE_DIR - #define LOGINFOFILE_DIR "/home/plg/loginfo/" +#define LOGINFOFILE_DIR "/home/plg/loginfo/" #endif #define UDISK_LOGINFO_ROOT_DIR "/udisk/log/" @@ -28,7 +28,7 @@ LogInfo::LogInfo(QWidget *parent) : textEdit->verticalScrollBar()->setStyleSheet("QScrollBar:vertical { width: 40px; }"); textEdit2 = ui->textEditRunStatus_2; //textEdit2->verticalScrollBar()->setStyleSheet("QScrollBar:vertical { width: 40px; }"); - textEdit2->verticalScrollBar()->setStyleSheet("QScrollBar:vertical { width: 40px; }"); + textEdit2->verticalScrollBar()->setStyleSheet("QScrollBar:vertical { width: 40px; }"); textEditMachInfo = ui->machinInformation; @@ -64,15 +64,15 @@ LogInfo::LogInfo(QWidget *parent) : LogInfo::~LogInfo() { - textEdit = 0; - textEdit2 = 0; - textEditMachInfo = 0; - if(fileDialog) - delete fileDialog; + textEdit = 0; + textEdit2 = 0; + textEditMachInfo = 0; + if(fileDialog) + delete fileDialog; delete ui; - disconnect(timerLogdel, SIGNAL(timeout()), this, SLOT(deleteOldLog())); - timerLogdel->stop(); + disconnect(timerLogdel, SIGNAL(timeout()), this, SLOT(deleteOldLog())); + timerLogdel->stop(); } void LogInfo::init() @@ -91,7 +91,9 @@ void LogInfo::init() QTabBar::tab:selected {background-color: rgb(255, 170, 127);height:70px;}\ QTabBar::tab:!selected {margin-top: 5px;}\ QTabBar::scroller{ width:80px;}"; -// this->setStyleSheet(style_main2); + // this->setStyleSheet(style_main2); + if (ctrl_loginfo == nullptr) ctrl_loginfo = LogInfoCtrl::instance(); + connect(ctrl_loginfo, &LogInfoCtrl::sig_cleanOver, this, &LogInfo::slt_cleanOver); } void LogInfo::buttonClickedSlot() @@ -119,19 +121,19 @@ void LogInfo::showMachineInformation(QString Mac,QString SerialNum, QString Vern { QString machInfo; machInfo = "Mac:" + Mac + "\n"; -// machInfo += "Serial Number:" + SerialNum + "\n"; + // machInfo += "Serial Number:" + SerialNum + "\n"; machInfo += "VernonBach Ver:" + VernonBachVer + "\n"; machInfo += "FPGA Ver:" + FpgaVer; -// QFile kernelVer("/proc/version"); -// if (kernelVer.open(QFile::ReadOnly | QFile::Text)) { -// QTextStream in(&kernelVer); -// QString kernelVer=in.readLine(); -// QStringList list=kernelVer.split(" "); -// QStringList list2=kernelVer.split("#"); -// machInfo = machInfo + "Kernel: "; -// machInfo = machInfo + list.at(2); -// machInfo = machInfo + "(" + list2.at(1) + ")"; -// } + // QFile kernelVer("/proc/version"); + // if (kernelVer.open(QFile::ReadOnly | QFile::Text)) { + // QTextStream in(&kernelVer); + // QString kernelVer=in.readLine(); + // QStringList list=kernelVer.split(" "); + // QStringList list2=kernelVer.split("#"); + // machInfo = machInfo + "Kernel: "; + // machInfo = machInfo + list.at(2); + // machInfo = machInfo + "(" + list2.at(1) + ")"; + // } textEditMachInfo->setText(machInfo); } @@ -141,10 +143,10 @@ void LogInfo::showVerionInformation(QString Mac,QString VernonBachVer, QString F static bool flag = false; if(!flag){ QString machInfo; - machInfo = "Mac:" + Mac + "\n"; + machInfo = "Mac:" + Mac + "\n"; machInfo += "VernonBach Ver:" + VernonBachVer +"|"+STM32Ver+ "\n"; machInfo += "FPGA Ver: NO" + FpgaVer + "\n"; -// machInfo += "PowerOnMode: " + QString::number(powerOnMode) + "\n"; + // machInfo += "PowerOnMode: " + QString::number(powerOnMode) + "\n"; textEditMachInfo->append(machInfo); } } @@ -193,7 +195,7 @@ void LogInfo::readRunStatusText() QDir dir1; dir1.setPath(LOGINFOFILE_DIR); if(!dir1.exists()) - dir1.mkdir(QString ("/home/plg/loginfo/")); + dir1.mkdir(QString ("/home/plg/loginfo/")); fileName=QString("/home/plg/loginfo/")+QDate::currentDate().toString("yyyyMMdd")+"_1.txt"; QFile file(fileName); if(file.exists()){ @@ -231,7 +233,7 @@ void LogInfo::on_pushButtonExportFile_pressed() //QString dirPath = ui->radioButtonLocal->isChecked()?DOC_ROOT_DIR:UDISK_LOGINFO_ROOT_DIR; QDir dir(UDISK_LOGINFO_ROOT_DIR); if(!dir.exists()){ -// system((char *)((QString("mkdir -p %1").arg(UDISK_LOGINFO_ROOT_DIR)).toLatin1().data())); + // system((char *)((QString("mkdir -p %1").arg(UDISK_LOGINFO_ROOT_DIR)).toLatin1().data())); system((char *)((QString("mkdir -p %1").arg(UDISK_LOGINFO_ROOT_DIR)).toLocal8Bit().data())); } @@ -246,7 +248,7 @@ void LogInfo::on_pushButtonExportFile_pressed() return; } -// system((char *)((QString("cp -r %1/* %2/").arg(LOGINFOFILE_DIR).arg(UDISK_LOGINFO_ROOT_DIR)).toLatin1().data())); + // system((char *)((QString("cp -r %1/* %2/").arg(LOGINFOFILE_DIR).arg(UDISK_LOGINFO_ROOT_DIR)).toLatin1().data())); system((char *)((QString("cp -r %1/* %2/").arg(LOGINFOFILE_DIR).arg(UDISK_LOGINFO_ROOT_DIR)).toLocal8Bit().data())); //refreshListView(EditMode); system("sync"); @@ -268,13 +270,13 @@ void LogInfo::on_pushButtonPreState_pressed(){ //qDebug()<<"3333"; if(openFileName.isEmpty()) textEdit2->clear(); if(fileDialog) { - // qDebug()<<"4444"; + // qDebug()<<"4444"; disconnect(fileDialog,SIGNAL(accepted()),0,0); // 如果对话框已经定义,则删除控件关联,否则也会出错。 } else {//qDebug()<<"5"; fileDialog = new MyFileDialog(0); - //qDebug()<<"6"; + //qDebug()<<"6"; } //qDebug()<<"7"; QDir dir1; @@ -285,7 +287,7 @@ void LogInfo::on_pushButtonPreState_pressed(){ if(fileDialog){ //qDebug()<<"8"; - if(fileDialog->directory().path()!="/home/plg/loginfo") + if(fileDialog->directory().path()!="/home/plg/loginfo") fileDialog->setDirectory(QDir("/home/plg/loginfo")); @@ -296,7 +298,7 @@ void LogInfo::on_pushButtonPreState_pressed(){ //qDebug()<<"read File 5"; } //else qDebug()<<"read File:"<setText(in.readAll()); - } + } } void LogInfo::deleteDirectoryContents(const QDir &directory) { QList entries = directory.entryInfoList( - QDir::NoDotAndDotDot | QDir::AllEntries); - QString today = QDate::currentDate().toString(Qt::ISODate); - // 使用传统的 for 循环遍历所有条目 - for (int i = 0; i < entries.size(); ++i) { - QFileInfo entryInfo = entries.at(i); - QString dirName=entryInfo.baseName(); - if(today==dirName) - continue; - QString fullPath = entryInfo.absoluteFilePath(); + QDir::NoDotAndDotDot | QDir::AllEntries); + QString today = QDate::currentDate().toString(Qt::ISODate); + // 使用传统的 for 循环遍历所有条目 + for (int i = 0; i < entries.size(); ++i) { + QFileInfo entryInfo = entries.at(i); + QString dirName=entryInfo.baseName(); + if(today==dirName) + continue; + QString fullPath = entryInfo.absoluteFilePath(); - if (entryInfo.isFile() || entryInfo.isSymLink()) { - // 如果是文件或符号链接,尝试删除 - if (!QFile::remove(fullPath)) { - qDebug() << "Failed to remove file or symlink:" << fullPath; - } - } else if (entryInfo.isDir()) { - // 如果是目录,递归调用以删除其内容 - QDir subDir(fullPath); - deleteDirectoryContents(subDir); + if (entryInfo.isFile() || entryInfo.isSymLink()) { + // 如果是文件或符号链接,尝试删除 + if (!QFile::remove(fullPath)) { + qDebug() << "Failed to remove file or symlink:" << fullPath; + } + } else if (entryInfo.isDir()) { + // 如果是目录,递归调用以删除其内容 + QDir subDir(fullPath); + deleteDirectoryContents(subDir); - // 目录现在应该是空的,尝试删除它 - if (!QDir().rmdir(fullPath)) { - qDebug() << "Failed to remove directory:" << fullPath; - } - } - } + // 目录现在应该是空的,尝试删除它 + if (!QDir().rmdir(fullPath)) { + qDebug() << "Failed to remove directory:" << fullPath; + } + } + } } // 删除指定文件夹超过七天的文件 void LogInfo::deleteOldLog(const QString folderPath,int days){ QDir dir(folderPath); // 创建一个QDir对象用于操作传入的文件夹路径 - if (!dir.exists()) { // 判断传入文件夹是否存在 - qDebug() << "文件夹不存在"; - return; - } - QDateTime currentDateTime = QDateTime::currentDateTime(); // 获取当前时间 - QDateTime sevenDaysAgo = currentDateTime.addDays(-days); // 计算days天前的日期时间 - // 目录下的文件和子目录的信息列表,列出所有文件和子目录并按照最后修改时间排序 - QFileInfoList fileInfoList = dir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot, QDir::Time); - foreach (QFileInfo fileInfo ,fileInfoList) { - if (!fileInfo.isDir()){ - QString fileExtension = fileInfo.suffix().toLower(); // 获取文件的扩展名并确保它是小写的 - // 选择删除那种图片类型 - if (fileExtension == "txt") { - if (fileInfo.lastModified() < sevenDaysAgo && fileInfo.fileName().indexOf('_')!=-1) { // 获取最后一个文件夹修改时间和days传入的时间最对比 - if (QFile::remove(fileInfo.absoluteFilePath())) { // 删除满足条件的文件的绝对路径 - qDebug() << "删除成功" << fileInfo.absoluteFilePath(); - } else { - qDebug() << "文件删除失败" << fileInfo.absoluteFilePath(); - } + if (!dir.exists()) { // 判断传入文件夹是否存在 + qDebug() << "文件夹不存在"; + return; + } + QDateTime currentDateTime = QDateTime::currentDateTime(); // 获取当前时间 + QDateTime sevenDaysAgo = currentDateTime.addDays(-days); // 计算days天前的日期时间 + // 目录下的文件和子目录的信息列表,列出所有文件和子目录并按照最后修改时间排序 + QFileInfoList fileInfoList = dir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot, QDir::Time); + foreach (QFileInfo fileInfo ,fileInfoList) { + if (!fileInfo.isDir()){ + QString fileExtension = fileInfo.suffix().toLower(); // 获取文件的扩展名并确保它是小写的 + // 选择删除那种图片类型 + if (fileExtension == "txt") { + if (fileInfo.lastModified() < sevenDaysAgo && fileInfo.fileName().indexOf('_')!=-1) { // 获取最后一个文件夹修改时间和days传入的时间最对比 + if (QFile::remove(fileInfo.absoluteFilePath())) { // 删除满足条件的文件的绝对路径 + qDebug() << "删除成功" << fileInfo.absoluteFilePath(); + } else { + qDebug() << "文件删除失败" << fileInfo.absoluteFilePath(); } } } } + } } void LogInfo::deleteOldLog() @@ -442,7 +445,7 @@ void LogInfo::truncatelog() const QString fileNameL=QString(LOGINFOFILE_DIR)+dts +"_1.txt"; QFile file(fileNameL); - if(file.size()>204800)//文件大小 + if(file.size()>204800)//文件大小 { QSettings settings("MySoft", "MyApp"); int filenum=settings.value(dts,2).toInt(); @@ -457,29 +460,29 @@ void LogInfo::truncatelog() void LogInfo::setScrollBar(){ QString styleSheet = "\n\ - QTextEdit QScrollBar:vertical {\n\ - width: 50px; /* 设置垂直滚动条的宽度 */\n\ - background: rgba(0, 0, 0, 0); /* 滚动条背景透明 */\n\ - margin: 20px 0 20px 0; /* 为按钮留出空间 */\n\ - }\n\ - QTextEdit QScrollBar::handle:vertical {\n\ - background: rgb(125, 170, 177); /* 滑块颜色 */\n\ - border-radius: 5px; /* 滑块圆角 */\n\ - min-height: 40px; /* 滑块最小高度 */\n\ - }\n\ - QTextEdit QScrollBar::add-line:vertical {\n\ - height: 40px; /* 设置向下按钮的高度 */\n\ - background: rgb(255, 170, 127); /* 按钮颜色 */\n\ - subcontrol-position: bottom;\n\ - subcontrol-origin: margin;\n\ - }\n\ - QTextEdit QScrollBar::sub-line:vertical {\n\ - height: 40px; /* 设置向上按钮的高度 */\n\ - background: rgb(255, 170, 127); /* 按钮颜色 */\n\ - subcontrol-position: top;\n\ - subcontrol-origin: margin;\n\ - }"; - ui->textEditRunStatus->setStyleSheet(styleSheet); + QTextEdit QScrollBar:vertical {\n\ + width: 50px; /* 设置垂直滚动条的宽度 */\n\ + background: rgba(0, 0, 0, 0); /* 滚动条背景透明 */\n\ + margin: 20px 0 20px 0; /* 为按钮留出空间 */\n\ +}\n\ + QTextEdit QScrollBar::handle:vertical {\n\ + background: rgb(125, 170, 177); /* 滑块颜色 */\n\ + border-radius: 5px; /* 滑块圆角 */\n\ + min-height: 40px; /* 滑块最小高度 */\n\ +}\n\ + QTextEdit QScrollBar::add-line:vertical {\n\ + height: 40px; /* 设置向下按钮的高度 */\n\ + background: rgb(255, 170, 127); /* 按钮颜色 */\n\ + subcontrol-position: bottom;\n\ + subcontrol-origin: margin;\n\ +}\n\ + QTextEdit QScrollBar::sub-line:vertical {\n\ + height: 40px; /* 设置向上按钮的高度 */\n\ + background: rgb(255, 170, 127); /* 按钮颜色 */\n\ + subcontrol-position: top;\n\ + subcontrol-origin: margin;\n\ +}"; + ui->textEditRunStatus->setStyleSheet(styleSheet); ui->textEditRunStatus_2->setStyleSheet(styleSheet); } @@ -503,234 +506,173 @@ void LogInfo::updateSysStatusToUI(const AlarmStatus& alarmStatus){ ui->labOscVol->setText(alarmStatus.highVol); ui->label_size->setText(alarmStatus.dataSize); - // 获取总状态 - getGeneralState(alarmStatus); - } -void LogInfo::getGeneralState(AlarmStatus status) +void LogInfo::bindSysPara(SysPara *sysPara) { - // 有红则红,全绿则绿,红>黄>绿 - // 检查从后往前判断,因为取最后一个状态QString - bool isRed = checkRed(status); - if (isRed) { - m_stateColor = DEV_STATUS_RED; - } else { - bool isYellow = checkYellow(status); - if (isYellow) { - m_stateColor = DEV_STATUS_YELLOW; - } else { - m_stateColor = DEV_STATUS_GREEN; - m_stateStr= tr("正常"); - } - } - emit sig_updateGeneralState(m_stateColor, m_stateStr); + this->sysPara = sysPara; } -bool LogInfo::checkRed(AlarmStatus &status) +void LogInfo::checkState() { - if (status.highVoltageFault == DEV_STATUS_RED) { - m_stateStr = tr("高压故障"); - return true; - } - if (status.chargeFault == DEV_STATUS_RED) { - m_stateStr = tr("相位故障"); - return true; - } - if (status.viscosityWarn == DEV_STATUS_RED) { - m_stateStr = tr("粘度故障"); - return true; - } - if (status.recycleWarn == DEV_STATUS_RED) { - m_stateStr = tr("回收故障"); - return true; - } - if (status.solveLevelWarn == DEV_STATUS_RED) { - m_stateStr = tr("溶液液位"); - return true; - } - if (status.inkWaterLevel == DEV_STATUS_RED) { - m_stateStr = tr("墨水液位"); - return true; - } - if (status.inkLeak == DEV_STATUS_RED) { - m_stateStr = tr("墨水缸满"); - return true; - } - if (status.inkSwint == DEV_STATUS_RED) { - m_stateStr = tr("墨线开关"); - return true; - } - return false; -} - -bool LogInfo::checkYellow(AlarmStatus &status) -{ - if (status.highVoltageFault == DEV_STATUS_YELLOW) { - m_stateStr = tr("高压故障"); - return true; - } - if (status.chargeFault == DEV_STATUS_YELLOW) { - m_stateStr = tr("相位故障"); - return true; - } - if (status.viscosityWarn == DEV_STATUS_YELLOW) { - m_stateStr = tr("粘度故障"); - return true; - } - if (status.recycleWarn == DEV_STATUS_YELLOW) { - m_stateStr = tr("回收故障"); - return true; - } - if (status.solveLevelWarn == DEV_STATUS_YELLOW) { - m_stateStr = tr("溶液液位"); - return true; - } - if (status.inkWaterLevel == DEV_STATUS_YELLOW) { - m_stateStr = tr("墨水液位"); - return true; - } - if (status.inkLeak == DEV_STATUS_YELLOW) { - m_stateStr = tr("墨水缸满"); - return true; - } - if (status.inkSwint == DEV_STATUS_YELLOW) { - m_stateStr = tr("墨线开关"); - return true; - } - return false; + ui->tabWidget->setCurrentIndex(3); } void LogInfo::applyStyleSheet() { QString styleSheet = R"( - QTabWidget { - border: none; - background-color: #7B838E; - } + QTabWidget::pane { + border: 1px solid #dddddd; + background-color: #ffffff; + } - QTabWidget::tab-bar { - background-color: #7B838E; - alignment: left; - height: 80px; - margin: 0; - } + QTabWidget::tab-bar { + top: -3px; + left: 10px; + } - QTabBar { - background-color: #7B838E; - border: none; - width: 100%; - min-width: 100%; - height: 80px; - padding: 0; - } + QTabBar::tab { + min-width: 90px; + min-height: 45px; + padding: 4px 10px; + margin-right: 4px; + border: 1px solid #dddddd; + border-bottom: none; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + background-color: #5396C1; + color: #ffffff; + } - QTabBar::tab { - width: 140px; - height: 80px; - font-size: 16px; - font-weight: bold; - color: #000000; - border: none; - border-top-left-radius: 10px; - border-top-right-radius: 10px; - alignment: center bottom; - padding-top: 0; - } - QTabBar::tab { - margin-left: 10px; - margin-top: 10px; - } - QTabBar::tab:!selected { - background: qlineargradient(x1:0, y1:0, x2:0, y2:1, - stop:0 #6E757F, stop:1 #96A0A9); - border: 2px solid #63535D; - border-bottom: none; - position: relative; - bottom: 0px; - } + QTabBar::tab:selected { + background-color: #6bb1e0; + color: #ffffff; + box-shadow: 0 -3px 8px rgba(44, 125, 232, 0.25); + } - QTabBar::tab:selected { - background: qlineargradient(x1:0, y1:0, x2:0, y2:1, - stop:0 #95B2D4, stop:1 #F0F0F0); - border: none; - position: relative; - bottom: 0px; - } + QWidget#buttonWidget { + background-color: #95989D; + } - QTabWidget::pane { - border: none; - background-color: #f0f0f0; - top: -12px; - } + QPushButton#closeBtn1,QPushButton#closeBtn2,QPushButton#closeBtn3,QPushButton#closeBtn4 { + background-color: #E6F7FF; + border: 1px solid #87CEEB; + border-radius: 4px; + font-size: 24px; + color: #228B22; + } - QWidget#buttonWidget { - background-color: #95989D; - } + QPushButton#closeBtn1:hover,QPushButton#closeBtn2:hover,QPushButton#closeBtn3:hover, QPushButton#closeBtn4:hover{ + background-color: #D1E9FF; + } - QPushButton#closeBtn1,QPushButton#closeBtn2,QPushButton#closeBtn3,QPushButton#closeBtn4 { - background-color: #E6F7FF; - border: 1px solid #87CEEB; - border-radius: 4px; - font-size: 24px; - color: #228B22; - } + QPushButton#closeBtn1:pressed,QPushButton#closeBtn2:pressed,QPushButton#closeBtn3:pressed, QPushButton#closeBtn4:pressed{ + background-color: #BAE7FF; + } - QPushButton#closeBtn1:hover,QPushButton#closeBtn2:hover,QPushButton#closeBtn3:hover, QPushButton#closeBtn4:hover{ - background-color: #D1E9FF; - } + QCheckBox { + font-size: 18px; + color: #000000; + font-weight:500; + } - QPushButton#closeBtn1:pressed,QPushButton#closeBtn2:pressed,QPushButton#closeBtn3:pressed, QPushButton#closeBtn4:pressed{ - background-color: #BAE7FF; - } + QCheckBox::indicator { + width: 18px; + height: 18px; + border: 1px solid #96A0A9; + border-radius: 10px; + background-color: #ffffff; + } - QCheckBox { - font-size: 18px; - color: #000000; - font-weight:500; - } + QCheckBox::indicator:checked { + background-color: #95B2D4; + border-color: #95B2D4; + image: url(:/Demo/image/select.png); + } - QCheckBox::indicator { - width: 18px; - height: 18px; - border: 1px solid #96A0A9; - border-radius: 10px; - background-color: #ffffff; - } + QLabel { + font-size: 15px; + } - QCheckBox::indicator:checked { - background-color: #95B2D4; - border-color: #95B2D4; - image: url(:/Demo/image/select.png); - } + QPushButton { + background-color: #5396C1; + color: #ffffff; + border: 1px solid #000000; + border-radius: 3px; + font-size: 18px; + font-weight:500; + } - QLabel { - font-size: 15px; - } + QPushButton:hover { + background-color: #5396C1; + } - QPushButton { - background-color: #5396C1; - color: #ffffff; - border: 1px solid #000000; - border-radius: 3px; - font-size: 18px; - font-weight:500; - } + QPushButton:disabled { + background-color: #7C828E; + color: #606060; + border-color: #808080; + } - QPushButton:hover { - background-color: #5396C1; - } - - QPushButton:disabled { - background-color: #7C828E; - color: #606060; - border-color: #808080; - } - - QWidget#fileTab, QWidget#extraTab, QWidget#settingsTab, QWidget#serviceTab { - background-color: #E3E7EC; - } - )"; + QWidget#fileTab, QWidget#extraTab, QWidget#settingsTab, QWidget#serviceTab { + background-color: #E3E7EC; + } + )"; this->setStyleSheet(styleSheet); } + +void LogInfo::on_btn_clean_clicked() +{ + if (ctrl_loginfo) ctrl_loginfo->emitSigClean(); +} + +void LogInfo::slt_cleanOver(bool flag) +{ + if (flag) { + lockUI(); + } else { + unlockUI(); + } +} + + +void LogInfo::lockUI() +{ + ui->closeBtn4->setEnabled(false); + ui->gl_state->setEnabled(false); + ui->gridLayout_7->setEnabled(false); + ui->tabWidget->setTabEnabled(0,false); + ui->tabWidget->setTabEnabled(1,false); + ui->tabWidget->setTabEnabled(2,false); + ui->lb_clean->setText(tr("清洗中,界面锁死")); +} + +void LogInfo::unlockUI() +{ + ui->closeBtn4->setEnabled(true); + ui->gl_state->setEnabled(true); + ui->gridLayout_7->setEnabled(true); + ui->tabWidget->setTabEnabled(0,true); + ui->tabWidget->setTabEnabled(1,true); + ui->tabWidget->setTabEnabled(2,true); + ui->lb_clean->setText(tr("")); +} + +void LogInfo::showEvent(QShowEvent *event) +{ + // 先执行父类事件 + QWidget::showEvent(event); + // 更新UI和状态 + if (sysPara) { + if(!sysPara->para.isCheckMagnet) + { + ui->btn_clean->setEnabled( (sysPara->status.currReclaimTankPos<70) + && (sysPara->status.statWarn & WARN_STATUS_HDINT)); + } + else + { + ui->btn_clean->setEnabled( (sysPara->status.currReclaimTankPos<70) ); + } + } + +} diff --git a/LogInfo.h b/LogInfo.h index c114bb9..c77c237 100644 --- a/LogInfo.h +++ b/LogInfo.h @@ -6,7 +6,9 @@ #include "MyFileDialog.h" #include #include +#include "SysPara.h" #include "myinclude.h" +#include "loginfoctrl.h" namespace Ui { class LogInfo; } @@ -34,23 +36,6 @@ typedef struct{ QString dataSize; }AlarmStatus; -//typedef struct { -// unsigned char inkSwith; -// unsigned char NozzleCover; -// unsigned char InkTankFull; -// unsigned char InkLevel; -// unsigned char SolventLevel; -// unsigned char RecyclyFault; -// unsigned char ViscosityFault; -// unsigned char PhaseFault; -// unsigned char HighVoltageFault; -// QString pressValue; -// QString visoValue; -// QString gearPumpRunSpeed; -// QString highVol; -// QString dataSize; -//}AlarmStatus; - class LogInfo : public QWidget { Q_OBJECT @@ -75,6 +60,10 @@ public: void applyStyleSheet(); // 应用样式表 void updateSysStatusToUI(const AlarmStatus& alarmStatus); + + void bindSysPara(SysPara *sysPara); + + void checkState(); protected slots: void deleteOldLog(const QString folderPath, int days); void deleteOldLog(); @@ -90,10 +79,12 @@ private slots: void buttonClickedSlot(); + void on_btn_clean_clicked(); + + void slt_cleanOver(bool flag); signals: void sendButtonClickedSignal(int); void faultTesumePress(); - void sig_updateGeneralState(DevStatusLightType type, QString stateStr); private: Ui::LogInfo *ui; @@ -107,16 +98,14 @@ private: static QString r_CurrentDate; QTimer *timerLogdel; + LogInfoCtrl *ctrl_loginfo = nullptr; + // 锁定全局控件,放出逆清洗 + void lockUI(); + void unlockUI(); +protected: + SysPara *sysPara; - DevStatusLightType m_stateColor = DEV_STATUS_GREEN; - //DEV_STATUS_GREEN:正常 - QString m_stateStr = "正常"; - //Mainwindow获取机器总状态 - void getGeneralState(AlarmStatus status); - bool checkRed(AlarmStatus &status); - bool checkYellow(AlarmStatus &status); - - + void showEvent(QShowEvent *event) override; }; #endif // LOGINFO_H diff --git a/MainInstruction.cpp b/MainInstruction.cpp index d27ffc8..d287a78 100644 --- a/MainInstruction.cpp +++ b/MainInstruction.cpp @@ -35,7 +35,7 @@ MainInstruction::MainInstruction(QWidget *parent) : connect(MTimeSetting,SIGNAL(accepted()),this,SLOT(onMTimeSettingAccepted())); - // setStyleSheet(styleSheet); + applyStyleSheet(); } MainInstruction::~MainInstruction() @@ -50,7 +50,7 @@ void MainInstruction::bindSysPara(SysPara *sysPara){ void MainInstruction::onGraphicsEditBtnClicked() { -// 在arm主机上以全屏模式显示,而在x86上无所谓 + // 在arm主机上以全屏模式显示,而在x86上无所谓 #if defined(ARCH_AARCH64_GNU) m_graphicsEditor->showFullScreen(); #else @@ -70,30 +70,30 @@ void MainInstruction::on_createNewFileBtn_clicked() void MainInstruction::on_maintenanceIntervalBtn_clicked() { -// dialogMaintenanceTimeSettingAuth->clearAuth(); -// dialogMaintenanceTimeSettingAuth->show(); + // dialogMaintenanceTimeSettingAuth->clearAuth(); + // dialogMaintenanceTimeSettingAuth->show(); onDlgAuthMaintenanceTimeAccepted(); } void MainInstruction::onDlgAuthMaintenanceTimeAccepted(){ -// QString authString= dialogMaintenanceTimeSettingAuth->getAuth(); -// if(dlgInputAddr->checWhJmDate(authString)) // 0xa001 -// { - QDate curDate = QDate::currentDate(); - QString mtEndDatestr = "20" + QString::number(sysPara->RFIDPara.maintenanceEndDate); - QDate mtEndDate = QDate::fromString(mtEndDatestr,"yyyyMMdd"); - int timeoutDay = curDate.daysTo(mtEndDate); - MTimeSetting->updateMaintenanceTime(QString("%1 Days").arg(timeoutDay)); - MTimeSetting->updateMaintenanceIntervalToUI(sysPara->RFIDPara.maintenanceInterval); - MTimeSetting->disableMaintenanceTimeSet(false); - MTimeSetting->show(); -// }else -// { -// QMessageBox::about(this, tr("提示"), tr("密码不正确!")); -// return; -// } + // QString authString= dialogMaintenanceTimeSettingAuth->getAuth(); + // if(dlgInputAddr->checWhJmDate(authString)) // 0xa001 + // { + QDate curDate = QDate::currentDate(); + QString mtEndDatestr = "20" + QString::number(sysPara->RFIDPara.maintenanceEndDate); + QDate mtEndDate = QDate::fromString(mtEndDatestr,"yyyyMMdd"); + int timeoutDay = curDate.daysTo(mtEndDate); + MTimeSetting->updateMaintenanceTime(QString("%1 Days").arg(timeoutDay)); + MTimeSetting->updateMaintenanceIntervalToUI(sysPara->RFIDPara.maintenanceInterval); + MTimeSetting->disableMaintenanceTimeSet(false); + MTimeSetting->show(); + // }else + // { + // QMessageBox::about(this, tr("提示"), tr("密码不正确!")); + // return; + // } } void MainInstruction::maintenanceDialogShow(){ @@ -163,7 +163,7 @@ void MainInstruction::ondialogAuthorizationAccepted(){ sysPara->status.WorkTimeOut=0; dlgInputAddr->ReadJm(); dlgInputAddr->show(); - // ui->labMac->setText(QString("Mac:%1").arg(dlgInputAddr->jd.addr)); + // ui->labMac->setText(QString("Mac:%1").arg(dlgInputAddr->jd.addr)); } } @@ -243,3 +243,116 @@ void MainInstruction::slt_timeSetting() sysPara->devOp->stm32Wr(0xA1,(unsigned char *)m_datatime,8); } + +void MainInstruction::applyStyleSheet() +{ + QString styleSheet = + R"( + QWidget#buttonWidget { + background-color: #95989D; + } + + QPushButton#closeBtn { + background-color: #E6F7FF; + border: 1px solid #87CEEB; + border-radius: 4px; + font-size: 24px; + color: #228B22; + } + + QPushButton#closeBtn:hover { + background-color: #D1E9FF; + } + + QPushButton#closeBtn:pressed { + background-color: #BAE7FF; + } + + QLabel { + font-size: 18px; + color: #000000; + font-weight: 500; + } + + QCheckBox { + font-size: 18px; + color: #000000; + font-weight:500; + } + + QCheckBox::indicator { + width: 18px; + height: 18px; + border: 1px solid #96A0A9; + border-radius: 10px; + background-color: #ffffff; + } + + QCheckBox::indicator:checked { + background-color: #95B2D4; + border-color: #95B2D4; + image: url(:/Demo/image/select.png); + } + + QPushButton { + background-color: #5396C1; + color: #ffffff; + border: 1px solid #000000; + border-radius: 3px; + font-size: 18px; + font-weight:500; + width: 180px; + height: 90px; + } + + QPushButton:hover { + background-color: #5396C1; + } + + QPushButton:disabled { + background-color: #7C828E; + color: #606060; + border-color: #808080; + } + + QWidget#fileTab, QWidget#extraTab, QWidget#settingsTab, QWidget#serviceTab { + background-color: #E3E7EC; + } + + QTabWidget::pane { + border: 1px solid #dddddd; + background-color: #ffffff; + } + + QTabWidget::tab-bar { + top: -3px; + left: 10px; + } + + QTabBar::tab { + min-width: 90px; + min-height: 45px; + padding: 4px 10px; + margin-right: 4px; + border: 1px solid #dddddd; + border-bottom: none; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + background-color: #5396C1; + color: #ffffff; + } + + QTabBar::tab:selected { + background-color: #6bb1e0; + color: #ffffff; + box-shadow: 0 -3px 8px rgba(44, 125, 232, 0.25); + } + + QTabBar::tab:focus { + outline: none; + } + + )"; + + this->setStyleSheet(styleSheet); +} diff --git a/MainInstruction.h b/MainInstruction.h index 1e01ebc..204c795 100644 --- a/MainInstruction.h +++ b/MainInstruction.h @@ -63,6 +63,7 @@ private: // 时间设置 TimeSettingDialog timeDia; + void applyStyleSheet(); // 应用样式表 }; #endif // MAININSTRUCTION_H diff --git a/MainInstruction.ui b/MainInstruction.ui index d5fdb16..22a5d96 100644 --- a/MainInstruction.ui +++ b/MainInstruction.ui @@ -93,74 +93,76 @@ 9 9 - 641 - 501 + 601 + 431 - 1 + 0 基本设置 - - - - 20 - 30 - 182 - 92 - - - - 图形编辑器 - - - - 220 - 60 - - - - - - - 20 - 150 - 182 - 92 - - - - 网口通信 - - - - 220 - 60 - - - - - - - 230 - 30 - 182 - 92 - - - - 时间设置 - - - - 220 - 60 - - - + + + + + + 253 + 92 + + + + 图形编辑器 + + + + 220 + 60 + + + + + + + + + 253 + 92 + + + + 时间设置 + + + + 220 + 60 + + + + + + + + + 253 + 92 + + + + 网口通信 + + + + 220 + 60 + + + + + diff --git a/MainWidget.ui b/MainWidget.ui index 765b864..e7c44c0 100644 --- a/MainWidget.ui +++ b/MainWidget.ui @@ -6,11 +6,26 @@ 0 0 - 817 - 600 + 800 + 607 + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + @@ -145,7 +160,7 @@ 9 9 - 746 + 761 150 @@ -171,15 +186,22 @@ + + + + 16777215 + 335 + + - + 180 - 16777215 + 150 @@ -580,9 +602,21 @@ + + + 200 + 150 + + - reclaimtanl_image + + + :/image/tool.png + + + true + @@ -613,7 +647,7 @@ - border:0px; + 喷嘴开启 @@ -647,7 +681,7 @@ - border:0px; + 喷嘴关闭 @@ -669,6 +703,7 @@ + diff --git a/Matrix/common.h b/Matrix/common.h index dbcb017..dc4dcd4 100644 --- a/Matrix/common.h +++ b/Matrix/common.h @@ -15,9 +15,13 @@ #include "zint.h" -#define U08 unsigned char -#define U16 unsigned short -#define U32 unsigned int +// #define U08 unsigned char +// #define U16 unsigned short +// #define U32 unsigned int + +typedef unsigned char U08; +typedef unsigned short U16; +typedef unsigned int U32; #ifdef __cplusplus extern "C" diff --git a/MyInputMethod.cpp b/MyInputMethod.cpp index db8b6d1..6fbc968 100644 --- a/MyInputMethod.cpp +++ b/MyInputMethod.cpp @@ -23,7 +23,9 @@ #include #include #include +#include #include "InkJetPrinter.h" + extern InkJetPrinter *pInkJectPrinter; MyInputMethod::MyInputMethod(QWidget *parent) :QObject(parent) diff --git a/Printsetting.cpp b/Printsetting.cpp index 5beb5cd..a34cbfb 100644 --- a/Printsetting.cpp +++ b/Printsetting.cpp @@ -80,472 +80,46 @@ void PrintSetting::on_pushButtonApply_pressed(){ } void PrintSetting::applyUIPara(){ - if(sysPara){ - /* - LogInfo::setRunStatusText(tr("addr: %1").arg(addr)); - LogInfo::setRunStatusText(tr("data: %1").arg(data)); - LogInfo::setRunStatusText(tr("len: %1").arg(len)); + if(sysPara){ + sysPara->para.printTriggerMode = PRINT_TRIGGER_TIME; //延时触发 + sysPara->para.printDelayMs = 200; //重复间隔 + sysPara->para.checkSpace = 0;//ui->checkSpace->isChecked(); + ui->spinBoxColDelay->setEnabled(1); + sysPara->para.leftRightInverse = ui->checkBoxLeftRightInverse->isChecked(); + sysPara->para.upDownInverse = ui->checkBoxUpDownInverse->isChecked(); + sysPara->para.currSelectVolPara = ui->comboBox_selcetVolPara->currentIndex(); + sysPara->para.printColDelay = ui->spinBoxColDelay->value(); - sysPara->para.ExtScreenType = ui->comBoxExtSrceen->currentIndex(); - sysPara->para.ExtMeterType = ui->comBoxExtMeterType->currentIndex(); - sysPara->para.gearPumpSpeedAlarm = ui->spinBox_gearPumpSpeedAlarm->value(); - if(sysPara->para.ExtScreenType==0) - { - sysPara->status.ExtScreenEn =0; - } - */ + sysPara->para.HighVoltageAmplitude = ui->spinBoxHighVoltageValue->value(); - sysPara->para.printTriggerMode = PRINT_TRIGGER_TIME; //延时触发 - sysPara->para.printDelayMs = 200; //重复间隔 - sysPara->para.checkSpace = 0;//ui->checkSpace->isChecked(); - ui->spinBoxColDelay->setEnabled(1); - sysPara->para.leftRightInverse = ui->checkBoxLeftRightInverse->isChecked(); - sysPara->para.upDownInverse = ui->checkBoxUpDownInverse->isChecked(); - sysPara->para.currSelectVolPara = ui->comboBox_selcetVolPara->currentIndex(); - sysPara->para.printColDelay = ui->spinBoxColDelay->value(); - /* - sysPara->para.scanInverse = ui->checkBoxScanInverse->isChecked(); - sysPara->para.currPrintMode = ui->comboBoxPrintMode->currentIndex(); - sysPara->para.varLenEn = ui->checkVARLEN->isChecked(); - sysPara->para.suspendAfterPhaseFault = ui->checkBoxSuspendAfterPhaseFault->isChecked(); - sysPara->para.powerOffAfterPhaseFault = ui->checkBoxPowerOffAfterPhaseFault->isChecked(); - sysPara->para.RecycleWarnAction = ui->checkBoxRecycleWarnAction->isChecked(); - sysPara->para.stopCounterMeterAfterFault = ui->checkBoxStopCounterMeterAfterFault->isChecked(); + // 回收泵的控制转至系统设置界面 byons@2026年4月22日 + // sysPara->para.gearPumpEnable = ui->checkBoxGearPumpEnable->isChecked(); + // sysPara->para.flagOfReclaimPumEnable = ui->checkBox_ReclaimPumpEnable->isChecked(); - sysPara->para.cnt1EndValue = ui->spinBoxCnt1EndValue->value(); - sysPara->para.cnt1RepeateValue = ui->spinBoxCnt1RepeateCnt->value(); - sysPara->para.cnt1StartValue = ui->spinBoxCnt1StartValue->value(); - sysPara->para.cnt1StepValue = ui->spinBoxCnt1StepValue->value(); - sysPara->para.cnt1CurrValue = ui->spinBoxCnt1CurrValue->value(); //这个值设置没关系,在关机前还会再此被设置 - sysPara->para.cnt2EndValue = ui->spinBoxCnt2EndValue->value(); - sysPara->para.cnt2RepeateValue = ui->spinBoxCnt2RepeateCnt->value(); - sysPara->para.cnt2StartValue = ui->spinBoxCnt2StartValue->value(); - sysPara->para.cnt2StepValue = ui->spinBoxCnt2StepValue->value(); - sysPara->para.cnt2CurrValue = ui->spinBoxCnt2CurrValue->value(); + sysPara->devOp->setHighVoltageAmplitudetoSTM32(); - sysPara->para.newAmplifyPlate = ui->checkBoxNewAmplifyPlate->isChecked(); - sysPara->para.cnt3EndValue = ui->spinBoxCnt3EndValue->value(); - sysPara->para.cnt3RepeateValue = ui->spinBoxCnt3RepeateCnt->value(); - sysPara->para.cnt3StartValue = ui->spinBoxCnt3StartValue->value(); - sysPara->para.cnt3StepValue = ui->spinBoxCnt3StepValue->value(); - sysPara->para.cnt3CurrValue = ui->spinBoxCnt3CurrValue->value(); + sysPara->devOp->writeFpgaCalandar(0); - sysPara->para.startVoltage = ui->spinBoxStartVoltage->value(); - sysPara->para.endVoltage = ui->spinBoxEndVoltage->value(); - sysPara->para.charBold = ui->spinBoxColRepeatCnt->value(); - */ - sysPara->para.HighVoltageAmplitude = ui->spinBoxHighVoltageValue->value(); - - // 回收泵的控制转至系统设置界面 byons@2026年4月22日 - // sysPara->para.gearPumpEnable = ui->checkBoxGearPumpEnable->isChecked(); - // sysPara->para.flagOfReclaimPumEnable = ui->checkBox_ReclaimPumpEnable->isChecked(); - - sysPara->devOp->setHighVoltageAmplitudetoSTM32(); - - /* - sysPara->status.cnt1CurrentValueInitDoneFlag = !ui->checkBoxResetCnt1CurrValue->isChecked(); - sysPara->status.cnt2CurrentValueInitDoneFlag = !ui->checkBoxResetCnt2CurrValue->isChecked(); - sysPara->status.cnt3CurrentValueInitDoneFlag = !ui->checkBoxResetCnt3CurrValue->isChecked(); - if(sysPara->para.cnt1ByGroupEnalbe) - ApplyCnt1GroupSetting(); - - sysPara->para.flagOfFastMode = ui->checkBox_FastMode->isChecked(); - if(sysPara->para.flagOfFastMode){ - if(ui->comboBoxPrintMode->count()>=3){ - ui->comboBoxPrintMode->setItemText(0,tr("超高速")); - ui->comboBoxPrintMode->setItemText(1,tr("高速")); - ui->comboBoxPrintMode->removeItem(2); - } - }else{ - if(ui->comboBoxPrintMode->count()<3){ - ui->comboBoxPrintMode->setItemText(0,tr("快速")); - ui->comboBoxPrintMode->setItemText(1,tr("标准")); - ui->comboBoxPrintMode->addItem(tr("慢速")); - } - } - - if(sysPara->para.EditMode==TXTFILE) - { - sysPara->status.specialVarPrint.SpecialVarEnable = ui->radioButtonSpecialCondition->isChecked(); - sysPara->status.cnt4CurrValue = ui->spinBoxHiddenValue->value(); - sysPara->status.specialVarPrint.MeterEnable = ui ->spinBoxMeterEnable->value(); - sysPara ->status.specialVarPrint.SpecialConditionValue = ui->spinBoxConditionValue->value(); - if(sysPara->status.specialVarPrint.SpecialVarEnable) - sysPara->status.specialVarPrint.SpecialVarEnable = 0xFF; - if(sysPara->status.specialVarPrint.MeterEnable) - sysPara->status.specialVarPrint.MeterEnable = 0xFF; - - sysPara->para.cnt4CurrValue = sysPara->status.cnt4CurrValue; - sysPara->para.HiddenConditionValue = sysPara->status.specialVarPrint.SpecialConditionValue; - sysPara->para.HiddenFuncEnable = sysPara->status.specialVarPrint.SpecialVarEnable; - sysPara->para.HiddenMeterEnable = sysPara->status.specialVarPrint.MeterEnable; - - } - */ - - sysPara->devOp->writeFpgaCalandar(0); - - /* - sysPara->para.reducedPixelNumRatio = ui->spinBoxReducedPixelNum->value(); - sysPara->para.reducedPixelMode = ui->comboBoxReducedPixMode->currentIndex(); - sysPara->para.rowSequenceMode = ui->spinBoxRowSequenceMode->value(); - - sysPara->para.pointVoltageAdjustPos = ui->spinBoxPointVoltageAdjustPos->value(); - sysPara->para.PointVoltageAdjustValue = ui->spinBoxVoltageAdjustValue->value(); - - sysPara->para.lineEndAdjustPointCnt = ui->spinBoxLineEndAdjustPointCnt->value(); - sysPara->para.lineEndAdjustPointDelay = ui->comboBoxLineEndAdjustPointMode->currentIndex(); - sysPara->para.lastLineEndPointFixedValue = ui->spinBoxLastLineEndPointFixedValue->value(); - - sysPara->para.FullColFixVal = ui->radioButtonFUllColFIxVal->isChecked();//2020/3/2 - sysPara->para.dacScale = ui->dacScaledSpinBox->value(); - - sysPara->para.industryIndex = ui->comboBoxIndustry->currentIndex(); - sysPara->para.recommendedPrintSpeed = ui->comboBoxRecommendedPrintSpeed->currentIndex(); - - if(ui->eleCNT1IncEn->isChecked()) - sysPara->para.eleEyeClearCntInSynMode = (sysPara->para.eleEyeClearCntInSynMode | 0x10); // CNT1 +1 - else - sysPara->para.eleEyeClearCntInSynMode = (sysPara->para.eleEyeClearCntInSynMode & 0xef); // CNT1 = current - - if(ui->eleCNT2IncEn->isChecked()) - sysPara->para.eleEyeClearCntInSynMode = (sysPara->para.eleEyeClearCntInSynMode | 0x20); // CNT2 +1 - else - sysPara->para.eleEyeClearCntInSynMode = (sysPara->para.eleEyeClearCntInSynMode & 0xdf); // CNT2 = current - - if(ui->eleCNT3IncEn->isChecked()) - sysPara->para.eleEyeClearCntInSynMode = (sysPara->para.eleEyeClearCntInSynMode | 0x40); // CNT3 +1 - else - sysPara->para.eleEyeClearCntInSynMode = (sysPara->para.eleEyeClearCntInSynMode & 0xbf); // CNT3 = current - sysPara->para.alterPrint.enable =ui->comboBoxAlterPrintEnable->currentIndex();// 修改后的 - if(sysPara->para.alterPrint.enable) - sysPara->para.textEditLineSpace = 0; - sysPara->para.alterPrint.lineSpace = sysPara->para.textEditLineSpace; - sysPara->para.alterPrint.startValue = ui->spinBoxXStartValue->value (); - sysPara->para.alterPrint.repeatValue = ui->spinBoxXGapValue->value (); - sysPara->para.alterPrint.repeatPrintTimes =ui->spinBoxXRepeatTimeValue->value (); - sysPara->para.alterPrint.DistanceTail =ui->spinBoxDistanceTail->value (); - if( sysPara->para.alterPrint.startValue>= sysPara->para.alterPrint.repeatValue ) - { - sysPara->para.alterPrint.startValue =sysPara->para.alterPrint.repeatValue -1; - ui->spinBoxXStartValue->setValue (sysPara->para.alterPrint.startValue); - QMessageBox::information(this,tr("提示:交替参数不正确"),tr("要求:起始位置<交替间隔")); - } - if( sysPara->para.alterPrint.repeatPrintTimes+sysPara->para.alterPrint.startValue - > sysPara->para.alterPrint.repeatValue ) - { - sysPara->para.alterPrint.repeatPrintTimes =sysPara->para.alterPrint.repeatValue -sysPara->para.alterPrint.startValue-1; - ui->spinBoxXRepeatTimeValue->setValue (sysPara->para.alterPrint.repeatPrintTimes); - - QMessageBox::information(this,tr("提示:交替参数不正确"),tr("要求:(重复次数+起始位置)<交替间隔")); - } - - sysPara->para.Cnt1NatureValue = ui->checkBoxCnt1NatureValue->isChecked (); // - sysPara->para.speedoverPaushPrint = ui->checkBoxSpeedOver->isChecked(); - sysPara->para.SynCntEn = ui->checkSynCntEn->isChecked(); - sysPara->para.Vol1of8En = ui->checkVol1of8En->isChecked();//打印优化 - sysPara->para.mode0211 = ui->checkmode0211->isChecked();//添加0211模式 - sysPara->para.cnt1ResetToInitValue = ui->resetToCnt1InitValueCheckBox->isChecked();// 电眼复位时,复位起始值或当前值 - //sysPara->para.printOnce = ui->checkBoxPrintOnce->isChecked();// 每条信息只喷一次 -// sysPara->para.printOnce = 0;// 每条信息只喷一次 - //sysPara->para.printNumPoint = ui->checkBoxNumPoint->isChecked();// 每条信息只喷一次 - sysPara->para.Reciclar = ui->checkBoxReciclar->isChecked();//sysPara->para.Reciclar = 0; // - switch(ui->spinBoxdecimalpointnum->value()) - //20240625修改小数点位数可选0-3位,FPGA原参数a44d 地址第6号位为 是否打印小数使能信号,1为打印小数,0为不打印小数。 - //更改为: - // a44d 地址第6号位和第7号位为 打印显示小数位数; - // 第7,6变量为 11 打印3位小数, - // 第7,6变量为 10 打印2位小数, - // 第7,6变量为 01 打印1位小数, - // 第7,6变量为 00 打印0位小数, - { - case 0: - ui->radioButtonSpecialCondition->setEnabled(true); - sysPara->para.printNumPoint = 0; - sysPara->para.rrr_nc = 0; - break; - case 1: - ui->radioButtonSpecialCondition->setEnabled(false); - ui->spinBoxMeterEnable->setValue(0); - sysPara->para.printNumPoint = 1; - sysPara->para.rrr_nc = 0; - break; - case 2: - ui->radioButtonSpecialCondition->setEnabled(false); - ui->spinBoxMeterEnable->setValue(0); - sysPara->para.printNumPoint = 0; - sysPara->para.rrr_nc = 1; - break; - case 3: - ui->radioButtonSpecialCondition->setEnabled(false); - ui->spinBoxMeterEnable->setValue(0); - sysPara->para.printNumPoint = 1; - sysPara->para.rrr_nc = 1; - break; - default: - sysPara->para.printNumPoint = 0; - sysPara->para.rrr_nc = 0; - break; - } - sysPara->para.stepPrint.startValue = ui->spinBoxJumpStartValue->value(); - sysPara->para.stepPrint.endValue = ui->spinBoxJumpEndValue->value(); - sysPara->para.stepPrint.enbale = ui->checkBoxStepPrintEn->isChecked(); - sysPara->para.stepPrint.StepValue = ui->spinBoxJumpStepValue->value(); - sysPara->para.ResetSendData = ui->checkBoxResetSendData->isChecked(); - sysPara->para.eleEyeReTrigDisable = ui->checkBoxEleEyeRetrigDis->isChecked(); - - sysPara->para.ResetAllProductCntEn = ui->checkAllProductResetEn->isChecked(); - sysPara->para.ResetProductCntEn = ui->checkProductResetEn->isChecked(); - sysPara->para.HVFaultCloseEn = ui->checkHVFaultCloseEn->isChecked(); - sysPara->para.phaseHighCnt = ui->phaseHighCntSpinBox->value(); - sysPara->para.charWidthSetEnable = ui->checkBoxCharWidthSet->isChecked(); - sysPara->para.isCheckMagnet = ui->checkBoxMagnet->isChecked(); - sysPara->para.isCheckPrintLight = ui->printfLightCheckBox->isChecked(); - - sysPara->para.bcOption.var1Num=ui->spinBoxCnt1EndValue->text().length(); - sysPara->para.bcOption.var2Num=ui->spinBoxCnt2EndValue->text().length(); -// sysPara->para.bcOption.var3Num=ui->spinBoxCnt2EndValue_2->text().length(); - - //qDebug()<<"sysPara->para.bcOption.varNum"<para.bcOption.var1Num<para.bcOption.var2Num; - sysPara->para.ExpiryDay = ui->spinBoxExpiryDate->value(); - sysPara->para.ExpirySplitMode = ui->CBDateFormat1->currentIndex(); - ui->resetToCnt1InitValueCheckBox->isChecked(); - //qDebug()<print.ExpiryDay; - */ - -// if(sysPara->devOp->writeFpgaPrintPara() != -1) // save para to disk file. -// QMessageBox::information(this,tr("提示"),tr("应用成功")); - /* - //ui->labelCnt1CurrValueTxt->setEnabled(false); -// ui->labelCnt2CurrValueTxt->setEnabled(false); - ui->spinBoxCnt1CurrValue->setEnabled(false); - ui->spinBoxCnt2CurrValue->setEnabled(false); - ui->spinBoxCnt3CurrValue->setEnabled(false); - - ui->checkBoxResetCnt1CurrValue->setChecked(false); - ui->checkBoxResetCnt2CurrValue->setChecked(false); - ui->checkBoxResetCnt3CurrValue->setChecked(false); - */ - - - } + } } void PrintSetting::updateSysParaToUI(){ - if(sysPara){ - /* - ui->checkVARLEN->setChecked(sysPara->para.varLenEn?1:0); - ui->checkBoxNewAmplifyPlate->setChecked(sysPara->para.newAmplifyPlate); - ui->comBoxExtSrceen->setCurrentIndex(sysPara->para.ExtScreenType); - ui->comBoxExtMeterType->setCurrentIndex(sysPara->para.ExtMeterType); - */ - ui->checkBoxLeftRightInverse->setChecked(sysPara->para.leftRightInverse); - ui->checkBoxUpDownInverse->setChecked(sysPara->para.upDownInverse); - sysPara->para.mode0211 = 1; - /* - ui->checkBoxScanInverse->setChecked(sysPara->para.scanInverse); - ui->checkBoxRecycleWarnAction->setChecked(sysPara->para.RecycleWarnAction); - ui->checkBoxPowerOffAfterPhaseFault->setChecked(sysPara->para.powerOffAfterPhaseFault); - ui->checkBoxSuspendAfterPhaseFault->setChecked(!sysPara->para.powerOffAfterPhaseFault); - ui->checkBoxSuspendAfterPhaseFault->setChecked(sysPara->para.suspendAfterPhaseFault); - ui->checkBoxStopCounterMeterAfterFault->setEnabled(sysPara->para.suspendAfterPhaseFault); - ui->checkBoxStopCounterMeterAfterFault->setChecked(sysPara->para.stopCounterMeterAfterFault); - ui->comboBoxPrintMode->setCurrentIndex(sysPara->para.currPrintMode); - ui->spinBox_gearPumpSpeedAlarm->setValue(sysPara->para.gearPumpSpeedAlarm); - */ - /*----------------------------------------*/ + if(sysPara){ + ui->checkBoxLeftRightInverse->setChecked(sysPara->para.leftRightInverse); + ui->checkBoxUpDownInverse->setChecked(sysPara->para.upDownInverse); + sysPara->para.mode0211 = 1; - ui->spinBoxColDelay->setValue(sysPara->para.printColDelay); + ui->spinBoxColDelay->setValue(sysPara->para.printColDelay); - /* - ui->spinBoxColRepeatCnt->setValue(sysPara->para.charBold); - ui->spinBoxCnt1EndValue->setValue(sysPara->para.cnt1EndValue); - ui->spinBoxCnt1RepeateCnt->setValue(sysPara->para.cnt1RepeateValue); - ui->spinBoxCnt1StartValue->setValue(sysPara->para.cnt1StartValue); - ui->spinBoxCnt1StepValue->setValue(sysPara->para.cnt1StepValue); - ui->spinBoxCnt1CurrValue->setValue(sysPara->para.cnt1CurrValue); - ui->spinBoxCnt2EndValue->setValue(sysPara->para.cnt2EndValue); - ui->spinBoxCnt2RepeateCnt->setValue(sysPara->para.cnt2RepeateValue); - ui->spinBoxCnt2StartValue->setValue(sysPara->para.cnt2StartValue); - ui->spinBoxCnt2StepValue->setValue(sysPara->para.cnt2StepValue); - ui->spinBoxCnt2CurrValue->setValue(sysPara->para.cnt2CurrValue); + ui->spinBoxHighVoltageValue->setValue(sysPara->para.HighVoltageAmplitude); - ui->spinBoxCnt3EndValue->setValue(sysPara->para.cnt3EndValue); - ui->spinBoxCnt3RepeateCnt->setValue(sysPara->para.cnt3RepeateValue); - ui->spinBoxCnt3StartValue->setValue(sysPara->para.cnt3StartValue); - ui->spinBoxCnt3StepValue->setValue(sysPara->para.cnt3StepValue); - ui->spinBoxCnt3CurrValue->setValue(sysPara->para.cnt3CurrValue); + ui->comboBox_selcetVolPara->setCurrentIndex(sysPara->para.currSelectVolPara); - ui->spinBoxStartVoltage->setValue(sysPara->para.startVoltage); + // 齿轮泵和回收泵的控制转至系统设置 byons@2026年4月22日 + // ui->checkBoxGearPumpEnable->setChecked(sysPara->para.gearPumpEnable); + // ui->checkBox_ReclaimPumpEnable->setChecked(sysPara->para.flagOfReclaimPumEnable); - ui->spinBoxEndVoltage->setValue(sysPara->para.endVoltage); - */ - - ui->spinBoxHighVoltageValue->setValue(sysPara->para.HighVoltageAmplitude); - - /* - ui->spinBoxReducedPixelNum->setValue(sysPara->para.reducedPixelNumRatio); - ui->comboBoxReducedPixMode->setCurrentIndex(sysPara->para.reducedPixelMode); - ui->spinBoxRowSequenceMode->setValue(sysPara->para.rowSequenceMode); - ui->spinBoxPointVoltageAdjustPos->setValue(sysPara->para.pointVoltageAdjustPos); - ui->spinBoxVoltageAdjustValue->setValue(sysPara->para.PointVoltageAdjustValue); - ui->spinBoxLineEndAdjustPointCnt->setValue(sysPara->para.lineEndAdjustPointCnt); - ui->comboBoxLineEndAdjustPointMode->setCurrentIndex(sysPara->para.lineEndAdjustPointDelay); - ui->spinBoxLastLineEndPointFixedValue->setValue(sysPara->para.lastLineEndPointFixedValue); -// ui->spinBoxFullColFixVal->setValue(sysPara->para.FullColFixVal); - ui->radioButtonFUllColFIxVal->setChecked(sysPara->para.FullColFixVal); - */ - - ui->comboBox_selcetVolPara->setCurrentIndex(sysPara->para.currSelectVolPara); - - // 齿轮泵和回收泵的控制转至系统设置 byons@2026年4月22日 - // ui->checkBoxGearPumpEnable->setChecked(sysPara->para.gearPumpEnable); - // ui->checkBox_ReclaimPumpEnable->setChecked(sysPara->para.flagOfReclaimPumEnable); - - //隐藏功能 - - /* - ui->radioButtonSpecialCondition->setChecked(sysPara->para.HiddenFuncEnable); - ui->spinBoxHiddenValue->setValue(sysPara->para.cnt4CurrValue); - ui->spinBoxConditionValue->setValue(sysPara->para.HiddenConditionValue); - ui->spinBoxMeterEnable->setValue(sysPara->para.HiddenMeterEnable); - - // sysPara->status.cnt4CurrValue = sysPara->para.cnt4CurrValue; - sysPara->status.specialVarPrint.SpecialConditionValue = sysPara->para.HiddenConditionValue ; - sysPara->status.specialVarPrint.SpecialVarEnable =sysPara->para.HiddenFuncEnable ; - sysPara->status.specialVarPrint.MeterEnable = sysPara->para.HiddenMeterEnable; - if(sysPara->status.specialVarPrint.SpecialVarEnable) - sysPara->status.specialVarPrint.SpecialVarEnable = 0xFF; - if(sysPara->status.specialVarPrint.MeterEnable) - sysPara->status.specialVarPrint.MeterEnable = 0xFF; - - emit HiddenFunction(ui->radioButtonSpecialCondition->isChecked()); - if(sysPara->para.HiddenFuncEnable) - { - // emit HiddenFunction(ui->radioButtonSpecialCondition->isChecked()); - ui->spinBoxdecimalpointnum->setValue(0); - ui->spinBoxdecimalpointnum->setEnabled(false); - - ui->radioButtonSpecialCondition->setEnabled(true); - ui->spinBoxHiddenValue->setEnabled(true); - ui->spinBoxConditionValue->setEnabled(true); - ui->spinBoxMeterEnable->setEnabled(true); - } - - if(!sysPara->para.rrr_nc) - { - if(!sysPara->para.printNumPoint) - ui->spinBoxdecimalpointnum->setValue(0); - else - ui->spinBoxdecimalpointnum->setValue(1); - } - else - { - if(!sysPara->para.printNumPoint) - ui->spinBoxdecimalpointnum->setValue(2); - else - ui->spinBoxdecimalpointnum->setValue(3); - } - - ui->comboBoxIndustry->setCurrentIndex(sysPara->para.industryIndex); - ui->comboBoxRecommendedPrintSpeed->setCurrentIndex(sysPara->para.recommendedPrintSpeed); - ui->comboBoxAlterPrintEnable->setCurrentIndex (sysPara->para.alterPrint.enable );// 修改后的 - if(sysPara->para.alterPrint.enable == 0) - { - ui->spinBoxXStartValue->setEnabled(false); - ui->spinBoxXRepeatTimeValue->setEnabled(false); - ui->spinBoxXGapValue->setEnabled(false); - } - ui->spinBoxXStartValue->setValue (sysPara->para.alterPrint.startValue ); - ui->spinBoxXGapValue->setValue (sysPara->para.alterPrint.repeatValue); - ui->spinBoxXRepeatTimeValue->setValue (sysPara->para.alterPrint.repeatPrintTimes); - ui->spinBoxDistanceTail->setValue(sysPara->para.alterPrint.DistanceTail ); - ui->checkBoxCnt1NatureValue->setChecked ( sysPara->para.Cnt1NatureValue); // - ui->checkBoxSpeedOver->setChecked(sysPara->para.speedoverPaushPrint); - ui->checkSynCntEn->setChecked(sysPara->para.SynCntEn); - ui->checkVol1of8En->setChecked(sysPara->para.Vol1of8En); - ui->checkBoxEleEyeRetrigDis->setChecked( sysPara->para.eleEyeReTrigDisable ); - ui->checkmode0211->setChecked(sysPara->para.mode0211); - ui->resetToCnt1InitValueCheckBox->setChecked(sysPara->para.cnt1ResetToInitValue); - qDebug()<<"checkmode0211:"<para.mode0211; - qDebug()<<"checkVol1of8En:"<para.Vol1of8En; - qDebug()<<"radioButtonFUllColFIxVal:"<para.FullColFixVal; - qDebug()<<"checkBoxCharWidthSet:"<para.charWidthSetEnable; - - //ui->checkBoxPrintOnce->setChecked(sysPara->para.printOnce); - //ui->checkBoxNumPoint->setChecked(sysPara->para.printNumPoint); - ui->checkBoxReciclar->setChecked(sysPara->para.Reciclar); - ui->dacScaledSpinBox->setValue(sysPara->para.dacScale); - ui->checkBoxResetSendData->setChecked(sysPara->para.ResetSendData); - ui->spinBoxJumpStartValue->setValue( sysPara->para.stepPrint.startValue ); - ui->spinBoxJumpEndValue->setValue( sysPara->para.stepPrint.endValue ); - //ui->checkBoxStepPrintEn->setEnabled( sysPara->para.stepPrint.enbale ); - ui->checkBoxStepPrintEn->setChecked( sysPara->para.stepPrint.enbale ); - ui->spinBoxJumpStepValue->setValue(sysPara->para.stepPrint.StepValue); - - - ui->checkProductResetEn->setChecked(sysPara->para.ResetProductCntEn); - ui->checkAllProductResetEn->setChecked(sysPara->para.ResetAllProductCntEn); - ui->checkHVFaultCloseEn->setChecked(sysPara->para.HVFaultCloseEn); - - // 电眼触发计数器动作 选择 - ui->eleCNT1IncEn->setChecked( (sysPara->para.eleEyeClearCntInSynMode & 0x10)?1:0); - ui->radCNT1ResetEn->setChecked( (sysPara->para.eleEyeClearCntInSynMode & 0x10)?0:1); - - ui->eleCNT2IncEn->setChecked( (sysPara->para.eleEyeClearCntInSynMode & 0x20)?1:0); - ui->radCNT2ResetEn->setChecked( (sysPara->para.eleEyeClearCntInSynMode & 0x20)?0:1); - - ui->eleCNT3IncEn->setChecked( (sysPara->para.eleEyeClearCntInSynMode & 0x40)?1:0); - ui->radCNT3ResetEn->setChecked( (sysPara->para.eleEyeClearCntInSynMode & 0x40)?0:1); - - ui->checkBoxCharWidthSet->setChecked(sysPara->para.charWidthSetEnable); - ui->checkBoxMagnet->setChecked(sysPara->para.isCheckMagnet); - ui->printfLightCheckBox->setChecked(sysPara->para.isCheckPrintLight); - - ui->phaseHighCntSpinBox->setValue( sysPara->para.phaseHighCnt); - - sysPara->para.bcOption.var1Num=ui->spinBoxCnt1EndValue->text().length(); - sysPara->para.bcOption.var2Num=ui->spinBoxCnt2EndValue->text().length(); - ui->checkBox_FastMode->setChecked(sysPara->para.flagOfFastMode); - - ui->labMac->setText(QString(" Mac:%1").arg(dlgInputAddr->jd.addr)); - sysPara->status.machineMac = dlgInputAddr->jd.addr; - showMachInfo(QString::number(dlgInputAddr->jd.addr)); - - ui->CBDateFormat1->setCurrentIndex(sysPara->para.ExpirySplitMode);//p_var->splitMode - ui->spinBoxExpiryDate->setValue(sysPara->para.ExpiryDay); - //on_spinBoxExpiryDate_valueChanged(sysPara->print.ExpiryVar.); - ui->checkBoxSaveCNTStateValue->setCheckState(sysPara->para.isCntSaveStateValue ? Qt::Checked : Qt::Unchecked); - - flagOfModuleDecimal = sysPara->para.flagOfModuleDecimal; - ModuleDecimalDisplay(); - flagOfModuleHide = sysPara->para.flagOfModuleHide; - ModuleHideDisplay(); - displayForAdjustVoltage(sysPara->para.flagOfAdjustVoltage); - - LoadCnt1GroupSettingsToUI(); - if(sysPara->para.mode0211 || sysPara->para.FullColFixVal) - { - ui->spinBoxStartVoltage->setEnabled(false); - ui->spinBoxEndVoltage->setEnabled(false); - } - if(sysPara->para.flagOfCnt1GroupDisp) - { - //edit@12-03 - const int indexTab=ui->tabWidget_2->indexOf(ui->tab_9); - if(-1==indexTab) - ui->tabWidget_2->addTab(ui->tab_9,tr("其他设置")); - - } - if(sysPara->para.flagOfstepPrint) - { - //edit@12-03 - const int indexTab=ui->tabWidget->indexOf(ui->tab_6); - if(-1==indexTab) - ui->tabWidget->addTab(ui->tab_6,tr("跳米设置")); - } - */ - TriggerupdateSysParaToUI(); + TriggerupdateSysParaToUI(); } } @@ -595,7 +169,7 @@ void PrintSetting::TriggerupdateSysParaToUI(){ //ui->spinBoxOutputPulseDelayMs->setEnabled(sysPara->para.pulseOutputEnable); - ui->spinBoxOutputPulseDelayMs->setEnabled(true /*sysPara->para.outputPulseDelayMs*/); + ui->spinBoxOutputPulseDelayMs->setEnabled(isPulseEenable); ui->spinBoxOuputPulseCol->setValue(sysPara->para.OuputPulseCol); ui->checkEyeTriggerSynPrintEn->setChecked (sysPara->para.eleEyeTriggerSynPrintEn); ui->comboBoxSyncActType->setCurrentIndex (sysPara->para.synchronizorActType); @@ -627,7 +201,7 @@ void PrintSetting::on_pushButtonApplyPulseFix_clicked() pulseNumFix->hide(); pulseNumFix->show(); -// qDebug()<<"pushButtonApplyPulseFix"; + // qDebug()<<"pushButtonApplyPulseFix"; } void PrintSetting::onPulseNumFixDone(float value){ @@ -658,17 +232,23 @@ void PrintSetting::applyUITriggerPara(){ sysPara->para.pulseOutputEnable = ui->checkBoxPulseOutputEnable->isChecked(); sysPara->para.productCntPerOutputPulse = ui->spinBoxProductCntPerOutputPulse->value(); - sysPara->para.outputPulseDelayMs = ui->spinBoxOutputPulseDelayMs->value(); + // 有脉冲延时使能的时候才可以设置延时 + if (isEnabled()) { + sysPara->para.outputPulseDelayMs = ui->spinBoxOutputPulseDelayMs->value(); + } else { + sysPara->para.outputPulseDelayMs = 0; + } + sysPara->para.OuputPulseCol = ui->spinBoxOuputPulseCol->value(); if(((ui->checkEyeTriggerSynPrintEn->checkState()==1 ) - &&(sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL || sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE)) + &&(sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL || sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE)) || sysPara->para.printTriggerMode == PRINT_TRIGGER_SYNCHRONIZER ) { ui->labelOutputPulseDelayMs->setText(tr("延时(毫米):")); } else ui->labelOutputPulseDelayMs->setText(tr("延时(毫秒):")); -// if(sysPara->devOp->writeFpgaPrintPara() != -1) -// QMessageBox::information(this,tr("提示"),tr("应用成功")); + // if(sysPara->devOp->writeFpgaPrintPara() != -1) + // QMessageBox::information(this,tr("提示"),tr("应用成功")); } } @@ -700,7 +280,7 @@ void PrintSetting::GetTriggerUIPara(){ //qDebug()<< (sysPara->para.AltMirrorGap & 0x0fff) << (sysPara->para.AltMirrorGap & 0xf000); -// if(ui->radioButtonDelayTrigger->isChecked()) + // if(ui->radioButtonDelayTrigger->isChecked()) if(ui->eleEyeEdgetTriggerInner->isChecked() && ui->radioButtonSynTriggerInner->isChecked()){ //都选外部--延时触发 sysPara->para.printTriggerMode = PRINT_TRIGGER_TIME; sysPara->para.printDelayMs = ui->spinBoxEleEyeTriggerIntervalMs->value(); //延时触发的重复间隔 @@ -736,7 +316,7 @@ void PrintSetting::GetTriggerUIPara(){ void PrintSetting::on_radioButtonDelayTrigger_pressed() { setTriggerUI(PRINT_TRIGGER_TIME); -// emit synDisableFontWidth(false); + // emit synDisableFontWidth(false); } void PrintSetting::on_radioButtonEleEyeEdgetTrigger_pressed() @@ -747,7 +327,7 @@ void PrintSetting::on_radioButtonEleEyeEdgetTrigger_pressed() setEnableSynTriggerSetting(true); else setEnableSynTriggerSetting(false); -// emit synDisableFontWidth(false); + // emit synDisableFontWidth(false); } void PrintSetting::on_radioButtonEleEyeLevelTrigger_pressed() @@ -758,22 +338,22 @@ void PrintSetting::on_radioButtonEleEyeLevelTrigger_pressed() setEnableSynTriggerSetting(true); else setEnableSynTriggerSetting(false); -// emit synDisableFontWidth(false); + // emit synDisableFontWidth(false); } void PrintSetting::on_radioButtonSynTrigger_pressed() { //edit@11-19 sysPara->para.printTriggerMode = PRINT_TRIGGER_SYNCHRONIZER; -// setTriggerUI(PRINT_TRIGGER_SYNCHRONIZER); -// const unsigned short &FpgaVer=sysPara->status.build_dat.builTime; -// //72版本禁用字符宽度 -// if(72 == FpgaVer){ -// ui->spinBoxSynTriggerPrintLenRatio->setValue(0); -// ui->spinBoxSynTriggerPrintLenRatio->setEnabled(0); -// }else if (67 == FpgaVer) -// ui->spinBoxSynTriggerPrintLenRatio->setEnabled(1); -// emit synDisableFontWidth(true); + // setTriggerUI(PRINT_TRIGGER_SYNCHRONIZER); + // const unsigned short &FpgaVer=sysPara->status.build_dat.builTime; + // //72版本禁用字符宽度 + // if(72 == FpgaVer){ + // ui->spinBoxSynTriggerPrintLenRatio->setValue(0); + // ui->spinBoxSynTriggerPrintLenRatio->setEnabled(0); + // }else if (67 == FpgaVer) + // ui->spinBoxSynTriggerPrintLenRatio->setEnabled(1); + // emit synDisableFontWidth(true); } @@ -803,7 +383,7 @@ void PrintSetting::on_checkEyeTriggerSynPrintEn_clicked(bool checked) ui->spinBoxEleEyeTriggerIntervalMs->setEnabled(0); ui->labelEleEyeTriggerPrintDelay->setText(tr("触发延时(毫米)")); ui->labelEleEyeTriggerIntervalMs->setText(tr("重复间隔(毫米)")); - ui->labelEleMaskTime->setText(tr("封锁间隔(毫米)")); + ui->labelEleMaskTime->setText(tr("抑止距离(毫米)")); ui->labelOutputPulseDelayMs->setText(tr("延时(毫米):")); if(ui->comboBoxSyncActType->currentIndex() || 0b11) //如果不是在正反转打印的模式下,就切换到正反转模式 { @@ -812,7 +392,7 @@ void PrintSetting::on_checkEyeTriggerSynPrintEn_clicked(bool checked) } else { -// ui->radioButtonSynTrigger->setChecked(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); + // ui->radioButtonSynTrigger->setChecked(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); #ifndef NON_CABLE ui->spinBoxSynTriggerPrintLen->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); #endif @@ -825,12 +405,12 @@ void PrintSetting::on_checkEyeTriggerSynPrintEn_clicked(bool checked) ui->pushButtonApplyPulseFix->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->comboBoxSynPrintMode->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->labelSynPrintMode->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); -// ui->checkBoxAutoSpeedEN->setEnabled (triggerMode == PRINT_TRIGGER_SYNCHRONIZER); + // ui->checkBoxAutoSpeedEN->setEnabled (triggerMode == PRINT_TRIGGER_SYNCHRONIZER); //ui->spinBoxEleEyeTriggerIntervalMs->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->spinBoxEleEyeTriggerIntervalMs->setEnabled(1); ui->labelEleEyeTriggerPrintDelay->setText(tr("触发延时(毫秒)")); ui->labelEleEyeTriggerIntervalMs->setText(tr("重复间隔(毫秒)")); - ui->labelEleMaskTime->setText(tr("封锁间隔(毫秒)")); + ui->labelEleMaskTime->setText(tr("抑止距离(毫秒)")); ui->labelOutputPulseDelayMs->setText( ui->radioButtonSynTrigger->isChecked()?tr("延时(毫米):"):tr("延时(毫秒):")); } @@ -842,8 +422,8 @@ void PrintSetting::setTriggerUI(int triggerMode){ ui->radioButtonDelayTrigger->setChecked(triggerMode == PRINT_TRIGGER_TIME); ui->spinBoxDelayTriggerValue->setEnabled(triggerMode == PRINT_TRIGGER_TIME); ui->labelDelayTriggerValue->setEnabled(triggerMode == PRINT_TRIGGER_TIME); - // ui->comboBoxTimeTriggerMode->setEnabled(triggerMode == PRINT_TRIGGER_TIME); - // ui->labelTimeTriggerMode->setEnabled(triggerMode == PRINT_TRIGGER_TIME); + // ui->comboBoxTimeTriggerMode->setEnabled(triggerMode == PRINT_TRIGGER_TIME); + // ui->labelTimeTriggerMode->setEnabled(triggerMode == PRINT_TRIGGER_TIME); ui->radioButtonEleEyeEdgetTrigger->setChecked( triggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE); ui->radioButtonEleEyeLevelTrigger->setChecked(triggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL); @@ -863,7 +443,7 @@ void PrintSetting::setTriggerUI(int triggerMode){ ) { //ui->radioButtonSynTrigger->setChecked(1); -// ui->spinBoxSynTriggerPrintLen->setEnabled(0); + // ui->spinBoxSynTriggerPrintLen->setEnabled(0); ui->spinBoxEleEyeTriggerIntervalMs->setEnabled(0); ui->labelSynTriggerPrintLen->setEnabled(1); ui->lineEditTriggerPulsePerMm->setEnabled(1); @@ -882,7 +462,7 @@ void PrintSetting::setTriggerUI(int triggerMode){ ui->labelEleEyeTriggerPrintDelay->setText(tr("触发延时(毫米)")); ui->labelEleEyeTriggerIntervalMs->setText(tr("重复间隔(毫米)")); - ui->labelEleMaskTime->setText(tr("封锁间隔(毫米)")); + ui->labelEleMaskTime->setText(tr("抑止距离(毫米)")); } else { @@ -899,9 +479,7 @@ void PrintSetting::setTriggerUI(int triggerMode){ ui->pushButtonApplyPulseFix->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->comboBoxSynPrintMode->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); ui->labelSynPrintMode->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); - //ui->checkBoxAutoSpeedEN->setEnabled (triggerMode == PRINT_TRIGGER_SYNCHRONIZER); - //ui->labelEleMaskTime->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); - //ui->spinBoxEleMaskTime->setEnabled(triggerMode == PRINT_TRIGGER_SYNCHRONIZER); + if(triggerMode == PRINT_TRIGGER_SYNCHRONIZER) { ui->labelEleEyeTriggerPrintDelay->setText(tr("触发延时(毫米)")); @@ -927,20 +505,20 @@ void PrintSetting::setTriggerUI(int triggerMode){ //72版本禁用该输入框 //67打开 // if(triggerMode== PRINT_TRIGGER_SYNCHRONIZER){ - // const unsigned short &FpgaVer=sysPara->status.build_dat.builTime; - // if(72==FpgaVer) - // { - // ui->spinBoxSynTriggerPrintLenRatio->setValue(0); - // ui->spinBoxSynTriggerPrintLenRatio->setEnabled(false); - // } - // else if(67==FpgaVer) - // { - // ui->spinBoxSynTriggerPrintLenRatio->setEnabled(true); - // } + // const unsigned short &FpgaVer=sysPara->status.build_dat.builTime; + // if(72==FpgaVer) + // { + // ui->spinBoxSynTriggerPrintLenRatio->setValue(0); + // ui->spinBoxSynTriggerPrintLenRatio->setEnabled(false); + // } + // else if(67==FpgaVer) + // { + // ui->spinBoxSynTriggerPrintLenRatio->setEnabled(true); + // } // } // else{ - // ui->spinBoxSynTriggerPrintLenRatio->setValue(0); - // ui->spinBoxSynTriggerPrintLenRatio->setEnabled(false); + // ui->spinBoxSynTriggerPrintLenRatio->setValue(0); + // ui->spinBoxSynTriggerPrintLenRatio->setEnabled(false); // } } @@ -963,139 +541,110 @@ void PrintSetting::setSynPrintMode(int mode){ void PrintSetting::applyStyleSheet() { - QString styleSheet = R"( - QTabWidget { + QString styleSheet = + R"( + QTabWidget { border: none; background-color: #7B838E; - } + } - QTabWidget::tab-bar { - background-color: #7B838E; - alignment: left; - height: 80px; - margin: 0; - } + QTabBar::tab:focus { + outline: none; + } - QTabBar { - background-color: #7B838E; - border: none; - width: 100%; - min-width: 100%; - height: 80px; - padding: 0; - } - - QTabBar::tab { - width: 140px; - height: 80px; - font-size: 16px; - font-weight: bold; - color: #000000; - border: none; - border-top-left-radius: 10px; - border-top-right-radius: 10px; - alignment: center bottom; - padding-top: 0; - } - QTabBar::tab { - margin-left: 10px; - margin-top: 10px; - } - QTabBar::tab:!selected { - background: qlineargradient(x1:0, y1:0, x2:0, y2:1, - stop:0 #6E757F, stop:1 #96A0A9); - border: 2px solid #63535D; + QTabBar::tab { + min-width: 90px; + min-height: 45px; + padding: 4px 10px; + margin-right: 4px; + border: 1px solid #dddddd; border-bottom: none; - position: relative; - bottom: 0px; - } + border-top-left-radius: 4px; + border-top-right-radius: 4px; + background-color: #5396C1; + color: #ffffff; + } - QTabBar::tab:selected { - background: qlineargradient(x1:0, y1:0, x2:0, y2:1, - stop:0 #95B2D4, stop:1 #F0F0F0); - border: none; - position: relative; - bottom: 0px; - } + QTabBar::tab:selected { + background-color: #6bb1e0; + color: #ffffff; + box-shadow: 0 -3px 8px rgba(44, 125, 232, 0.25); + } - QTabWidget::pane { - border: none; - background-color: #f0f0f0; - top: -12px; - } + QTabWidget::tab-bar { + top: -3px; + left: 10px; + } - QWidget#buttonWidget { + QWidget#buttonWidget { background-color: #95989D; - } + } - QPushButton#closeBtn { + QPushButton#closeBtn { background-color: #E6F7FF; border: 1px solid #87CEEB; border-radius: 4px; font-size: 24px; color: #228B22; - } + } - QPushButton#closeBtn:hover { + QPushButton#closeBtn:hover { background-color: #D1E9FF; - } + } - QPushButton#closeBtn:pressed { + QPushButton#closeBtn:pressed { background-color: #BAE7FF; - } + } - QLabel { + QLabel { font-size: 18px; color: #000000; font-weight: 500; - } + } - QCheckBox { + QCheckBox { font-size: 18px; color: #000000; font-weight:500; - } + } - QCheckBox::indicator { + QCheckBox::indicator { width: 18px; height: 18px; border: 1px solid #96A0A9; border-radius: 10px; background-color: #ffffff; - } + } - QCheckBox::indicator:checked { + QCheckBox::indicator:checked { background-color: #95B2D4; border-color: #95B2D4; image: url(:/Demo/image/select.png); - } + } - QPushButton { + QPushButton { background-color: #5396C1; color: #ffffff; border: 1px solid #000000; border-radius: 3px; font-size: 18px; font-weight:500; - } + } - QPushButton:hover { + QPushButton:hover { background-color: #5396C1; - } + } - QPushButton:disabled { + QPushButton:disabled { background-color: #7C828E; color: #606060; border-color: #808080; - } + } - QWidget#fileTab, QWidget#extraTab, QWidget#settingsTab, QWidget#serviceTab { + QWidget#fileTab, QWidget#extraTab, QWidget#settingsTab, QWidget#serviceTab { background-color: #E3E7EC; - } - )"; - -// closeBtn->setObjectName("closeBtn"); -// buttonWidget->setObjectName("buttonWidget"); + } + )"; this->setStyleSheet(styleSheet); } @@ -1178,11 +727,17 @@ void PrintSetting::on_radioButtonSynTriggerExternal_clicked() void PrintSetting::on_radioButtonEleEyeEdgetTrigger_clicked() { - sysPara->para.printTriggerMode = PRINT_TRIGGER_ELEC_EYE_EDGE; + sysPara->para.printTriggerMode = PRINT_TRIGGER_ELEC_EYE_EDGE; } void PrintSetting::on_radioButtonEleEyeLevelTrigger_clicked() { - sysPara->para.printTriggerMode = PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL; + sysPara->para.printTriggerMode = PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL; } + +void PrintSetting::on_checkBoxPulseOutputEnable_clicked(bool checked) +{ + isPulseEenable = checked; + ui->spinBoxOutputPulseDelayMs->setEnabled(checked); +} diff --git a/Printsetting.h b/Printsetting.h index cd41daa..04e3651 100644 --- a/Printsetting.h +++ b/Printsetting.h @@ -73,11 +73,15 @@ private slots: void on_radioButtonSynTriggerExternal_clicked(); + void on_checkBoxPulseOutputEnable_clicked(bool checked); + private: Ui::PrintSetting *ui; PulseNumFix *pulseNumFix; + bool isPulseEenable = false; + void init(); void applyStyleSheet(); // 应用样式表 diff --git a/Printsetting.ui b/Printsetting.ui index f7ac485..18dc267 100644 --- a/Printsetting.ui +++ b/Printsetting.ui @@ -26,7 +26,7 @@ Qt::StrongFocus - 2 + 0 @@ -35,8 +35,8 @@ - 210 - 30 + 220 + 90 122 25 @@ -57,8 +57,8 @@ - 340 - 20 + 350 + 80 121 37 @@ -82,8 +82,8 @@ - 210 - 80 + 220 + 160 121 25 @@ -104,8 +104,8 @@ - 340 - 70 + 350 + 150 122 37 @@ -123,8 +123,8 @@ - 149 - 120 + 160 + 230 181 37 @@ -139,9 +139,9 @@ - 340 - 120 - 185 + 351 + 230 + 220 37 @@ -158,80 +158,15 @@ - 5行5点阵 + 32点阵对5点阵的优化 - 4行7点阵 + 32点阵对4点阵的优化 - - - - 240 - 199 - 231 - 131 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - 0 - 37 - - - - Qt::RightToLeft - - - 信息上下颠倒 - - - - :/icon/updown.png:/icon/updown.png - - - - - - - - 0 - 37 - - - - Qt::RightToLeft - - - 信息左右颠倒 - - - - :/icon/leftright.png:/icon/leftright.png - - - - - @@ -737,7 +672,7 @@ border-radius: 5px; 40 50 431 - 171 + 211 @@ -925,7 +860,7 @@ border-radius: 5px; 540 - 20 + 30 171 111 @@ -963,8 +898,8 @@ border-radius: 5px; - 560 - 130 + 530 + 150 191 131 @@ -1052,8 +987,8 @@ border-radius: 5px; - 380 - 310 + 300 + 270 171 80 @@ -1103,8 +1038,8 @@ border-radius: 5px; - 50 - 330 + 60 + 300 231 41 @@ -1472,6 +1407,63 @@ QRadioButton { + + + 其他设置 + + + + + 320 + 120 + 135 + 37 + + + + + 0 + 37 + + + + Qt::RightToLeft + + + 信息上下颠倒 + + + + :/icon/updown.png:/icon/updown.png + + + + + + 320 + 220 + 135 + 37 + + + + + 0 + 37 + + + + Qt::RightToLeft + + + 信息左右颠倒 + + + + :/icon/leftright.png:/icon/leftright.png + + + diff --git a/QtUI.pro b/QtUI.pro index 8dd49da..3296107 100644 --- a/QtUI.pro +++ b/QtUI.pro @@ -163,6 +163,7 @@ HEADERS += Public.h \ Log/logger.h \ Log/logmessage.h \ Log/logglobal.h \ + loginfoctrl.h FORMS += \ @@ -314,7 +315,8 @@ SOURCES +=\ scene/piccodeitem.cpp \ Log/filelogger.cpp \ Log/logger.cpp \ - Log/logmessage.cpp + Log/logmessage.cpp \ + loginfoctrl.cpp diff --git a/SystemManage.cpp b/SystemManage.cpp index 54851c6..f62491c 100644 --- a/SystemManage.cpp +++ b/SystemManage.cpp @@ -1218,35 +1218,6 @@ void SystemManage::on_pushButtonAutoClean_pressed() }*/ } - -void SystemManage::on_pushButtonFontToUdisk_pressed() -{ - // - QMessageBox::StandardButton ret; - ret = QMessageBox::information(this, tr("警告"), - tr("是否确认导出字库到U盘?"), - QMessageBox::Ok | QMessageBox::Cancel); - if (ret == QMessageBox::Ok) - { - QFile file("/udisk"); - if(!file.exists()){ - QMessageBox::warning(this, tr("错误"), - tr("U盘不可识别!")); - return; - } - - system((char *)((QString("cp /usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib/fonts/* /udisk/.")).toLatin1().data())); - system((char *)((QString("cp /usr/lib/fonts/* /udisk/.")).toLatin1().data()));//am335x - system((char *)((QString("cp /usr/lib/fonts/* /udisk/.")).toLatin1().data())); - system((char *)((QString("mkdir /udisk/zk")).toLatin1().data())); -// system((char *)((QString("cp /opt/zk/* /udisk/zk/ ")).toLatin1().data())); - QMessageBox::information(this, tr("提示"), - tr("字库导出完成!")); - //emit configChanged(); - } - -} - void SystemManage::on_pushButtonMotorTest_pressed() { QMessageBox::StandardButton ret; diff --git a/SystemManage.h b/SystemManage.h index 97642c0..536e815 100644 --- a/SystemManage.h +++ b/SystemManage.h @@ -91,8 +91,6 @@ private slots: /***2019/10/23 */ //void on_pushButtonAutoClean_clicked(); - void on_pushButtonFontToUdisk_pressed(); - void on_pushButtonMotorTest_pressed(); void on_pushButtonPushAir_pressed(); diff --git a/SystemManage.ui b/SystemManage.ui index 634b612..820a407 100644 --- a/SystemManage.ui +++ b/SystemManage.ui @@ -39,7 +39,7 @@ 680 - 530 + 492 100 41 @@ -77,13 +77,13 @@ - + 9 9 750 - 502 + 471 @@ -620,29 +620,6 @@ - - - - - 0 - 60 - - - - - 200 - 16777215 - - - - 导出字库 - - - - :/icon/udisk.png:/icon/udisk.png - - - diff --git a/SystemSetting.cpp b/SystemSetting.cpp index b3cae90..68cf18c 100644 --- a/SystemSetting.cpp +++ b/SystemSetting.cpp @@ -47,6 +47,12 @@ SystemSetting::SystemSetting(QWidget *parent) : dialogUpateMm =new DialogAuthorization; connect(dialogUpateMm,SIGNAL(accepted()),this,SLOT(ondialogAuthorizationAccepted())); + if (ctrl_loginfo == nullptr) { + ctrl_loginfo = LogInfoCtrl::instance(); + connect(ctrl_loginfo, &LogInfoCtrl::sig_clean, + this, &SystemSetting::on_pushButtonCleanUP_pressed); + } + init(); ui->label->hide(); @@ -89,6 +95,20 @@ void SystemSetting::buttonClickedSlot() } } +void SystemSetting::lockUI() +{ + ui->checkBtn->setEnabled(false); + ui->closeBtn->setEnabled(false); + ui->pushButtonHighVoltageData->setEnabled(false); +} + +void SystemSetting::unlockUI() +{ + ui->checkBtn->setEnabled(true); + ui->closeBtn->setEnabled(true); + ui->pushButtonHighVoltageData->setEnabled(true); +} + void SystemSetting::SystemupdateSysParaToUI(){ updateSysParaToUI(); @@ -237,6 +257,8 @@ void SystemSetting::updateSysStatusToUI(){ enCleanUpAppendFlag=5; //sysPara->devOp->controlReclaimTankClose(1); //ui->label_status->setText(tr("正在关回收槽......")); + if(ctrl_loginfo) ctrl_loginfo->emitSigCleanOver(false); + unlockUI(); } else if(sysPara->status.currReclaimTankPos ==0 && (enCleanUpAppendFlag==5 ||enCleanUpAppendFlag==4)) //? { @@ -248,10 +270,6 @@ void SystemSetting::updateSysStatusToUI(){ enCleanUpAppendFlag=0; } } - else - { - - } } } @@ -294,10 +312,14 @@ void SystemSetting::on_pushButtonCleanUP_pressed() enCleanUpAppendFlag=1;// 开始启动手动模式 sysPara->devOp->mainInkCtrl(); + if (ctrl_loginfo) ctrl_loginfo->emitSigCleanOver(true); + lockUI(); timer2->start(2000); // 暂时循环一下2s } else if (msgBox.clickedButton() == cancleCleanButton) { enCleanUpAppendFlag=3; + if (ctrl_loginfo) ctrl_loginfo->emitSigCleanOver(false); + unlockUI(); timerHandler2(); return ; } @@ -352,7 +374,6 @@ void SystemSetting::timerHandler2(){ } else if(enCleanUpAppendFlag==3){// 清洗完成 enCleanUpAppendFlag=4; - // emit setRunStatus(tr("清洗完成")); sysPara->devOp->controlCycleValve(false); sysPara->devOp->controlViscosityPump(false); sysPara->devOp->controlReclaimTankClose(1); @@ -365,6 +386,9 @@ void SystemSetting::timerHandler2(){ } else if(enCleanUpAppendFlag==4){ emit setRunStatus(tr("清洗完成")); + if (ctrl_loginfo) ctrl_loginfo->emitSigCleanOver(false); + unlockUI(); + if(sysPara->status.currReclaimTankPos==0){ enCleanUpAppendFlag=0; if(timer2->isActive()) timer2->stop(); @@ -697,75 +721,20 @@ void SystemSetting::on_spinBoxOscillatorVoltage_valueChanged(int arg1) } #include "Public.h" -void SystemSetting::on_pushButtonInterFace_pressed() -{ - QString s1 = Public::ReadLanguageName(); - if(s1 =="English") { - dlgLanguage.LangIndex =INPUT_METHOD_TYPE_ENGLISH; - } - else if(s1 =="Korean") { - dlgLanguage.LangIndex =INPUT_METHOD_TYPE_KOREAN; - } - else{ - dlgLanguage.LangIndex =INPUT_METHOD_TYPE_CHINESE; - } - dlgLanguage.setCurrentLanguage(); - dlgLanguage.show(); - - -/* - QFile file(SYS_ROOT_DIR"UseEn"); - - QMessageBox::StandardButton ret; - ret = QMessageBox::information(this, tr("警告"), - tr("确定要切换显示语言吗?\r\n(重启才能生效)"), - QMessageBox::Ok | QMessageBox::Cancel); - if (ret != QMessageBox::Ok){ - return; - } - - QString s1 = Public::ReadLanguageName(); - - if(file.open(QIODevice::ReadWrite| QIODevice::Truncate)) { - QByteArray buf; - buf.clear(); - if(s1 =="English") {// English--> Vietnamese - QMessageBox::information(this,tr("提示"),tr("重启后切换到越南语界面")); - buf.append("Vietnamese\r\n"); - buf.append("YN_utf8.txt\r\n"); - } - else if(s1 =="Vietnamese") {// Vietnamese--> Chinese - QMessageBox::information(this,tr("提示"),tr("重启后切换到中文界面")); - buf.append("Chinese\r\n"); - buf.append("WINPY_utf8.txt\r\n"); - } - else{// Chinese--> English - QMessageBox::information(this,tr("提示"),tr("重启后切换到英文界面")); - buf.append("English\r\n"); - buf.append("WINPY_utf8.txt\r\n"); - } - file.write(buf); - file.close(); - setInterfaceMode(); - } -*/ -} - -void SystemSetting::setInterfaceMode() -{ - QString s1 = Public::ReadLanguageName(); - if(s1 =="English") {// English--> Vietnamese - ui->pushButtonInterFace->setText( tr("Tiếng Việt(Vietnamese interface)")); - } - else if(s1 =="Vietnamese") {// Vietnamese--> Chinese - ui->pushButtonInterFace->setText( tr("Chinese interface(中文界面)")); - } - else{// Chinese--> English - ui->pushButtonInterFace->setText( tr("English interface(英文界面)")); - } - -} +//void SystemSetting::setInterfaceMode() +//{ +// QString s1 = Public::ReadLanguageName(); +// if(s1 =="English") {// English--> Vietnamese +// ui->pushButtonInterFace->setText( tr("Tiếng Việt(Vietnamese interface)")); +// } +// else if(s1 =="Vietnamese") {// Vietnamese--> Chinese +// ui->pushButtonInterFace->setText( tr("Chinese interface(中文界面)")); +// } +// else{// Chinese--> English +// ui->pushButtonInterFace->setText( tr("English interface(英文界面)")); +// } +//} void SystemSetting::applyStyleSheet() { diff --git a/SystemSetting.h b/SystemSetting.h index d76c45a..1e5a03d 100644 --- a/SystemSetting.h +++ b/SystemSetting.h @@ -9,6 +9,7 @@ #include "DialogAuthorization.h" #include "dlgmutilanguage.h" #include +#include "loginfoctrl.h" namespace Ui { class SystemSetting; } @@ -40,7 +41,7 @@ Q_SIGNALS: void setRunStatus(QString); void pressureAdjust(); private slots: - void setInterfaceMode(); +// void setInterfaceMode(); void SystemupdateSysParaToUI(); void on_spinBoxReclaimPumpPower_valueChanged(int arg1); @@ -50,7 +51,6 @@ private slots: void timerHandler(); void on_spinBoxOscillatorVoltage_valueChanged(int arg1); - void on_pushButtonInterFace_pressed(); void ondialogAuthorizationAccepted(); void onCleanUPNow(); void timerHandler2(); @@ -63,11 +63,15 @@ signals: private: Ui::SystemSetting *ui; - DlgMutiLanguage dlgLanguage; QTimer *timer,*timer2, *SetinkcloseCountTimer, *timerAuto; unsigned char enCleanUpAppendFlag; // 0空闲,1关开回收槽,2手动,3清洗,4恢复,5停止,6 bool r_PumpValveControledByHand; DialogAuthorization *dialogUpateMm; + LogInfoCtrl *ctrl_loginfo = nullptr; + + // 清洗中,界面锁死 + void lockUI(); + void unlockUI(); }; #endif // SSYSTEMSETTING_H diff --git a/SystemUpdate.cpp b/SystemUpdate.cpp index 76212fa..9a22a92 100644 --- a/SystemUpdate.cpp +++ b/SystemUpdate.cpp @@ -1,6 +1,9 @@ #include "SystemUpdate.h" #include "ui_SystemUpdate.h" #include "SystemManage.h" +#include "Public.h" +#include "InputMethod.h" +#include SystemUpdate::SystemUpdate(QWidget *parent) : QWidget(parent), @@ -17,6 +20,11 @@ SystemUpdate::~SystemUpdate() delete ui; } +void SystemUpdate::bindSysPara(SysPara *sysPara) +{ + dlgLanguage.bindSysPara(sysPara); +} + /*关闭按键*/ void SystemUpdate::on_closeBtn_clicked() { @@ -92,3 +100,44 @@ void SystemUpdate::on_pushButtonUpdateCharLib_clicked() emit sendUpDateChARLIBSignal(); } + +void SystemUpdate::on_pushButtonFontToUdisk_clicked() +{ + QMessageBox::StandardButton ret; + ret = QMessageBox::information(this, tr("警告"), + tr("是否确认导出字库到U盘?"), + QMessageBox::Ok | QMessageBox::Cancel); + if (ret == QMessageBox::Ok) + { + QFile file("/udisk"); + if(!file.exists()){ + QMessageBox::warning(this, tr("错误"), + tr("U盘不可识别!")); + return; + } + + system((char *)((QString("cp /usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib/fonts/* /udisk/.")).toLatin1().data())); + system((char *)((QString("cp /usr/lib/fonts/* /udisk/.")).toLatin1().data()));//am335x + system((char *)((QString("cp /usr/lib/fonts/* /udisk/.")).toLatin1().data())); + system((char *)((QString("mkdir /udisk/zk")).toLatin1().data())); + QMessageBox::information(this, tr("提示"), + tr("字库导出完成!")); + } +} + +void SystemUpdate::on_pushButtonInterFace_clicked() +{ + QString s1 = Public::ReadLanguageName(); + if(s1 =="English") { + dlgLanguage.LangIndex =INPUT_METHOD_TYPE_ENGLISH; + } + else if(s1 =="Korean") { + dlgLanguage.LangIndex =INPUT_METHOD_TYPE_KOREAN; + } + else{ + dlgLanguage.LangIndex =INPUT_METHOD_TYPE_CHINESE; + } + + dlgLanguage.setCurrentLanguage(); + dlgLanguage.show(); +} diff --git a/SystemUpdate.h b/SystemUpdate.h index 45a7e9a..ddd0b68 100644 --- a/SystemUpdate.h +++ b/SystemUpdate.h @@ -6,6 +6,8 @@ #define UPDATESOFT 3 #define UPDATECHARLIB 4 +#include "dlgmutilanguage.h" + #include namespace Ui { @@ -20,10 +22,14 @@ public: explicit SystemUpdate(QWidget *parent = 0); ~SystemUpdate(); + void bindSysPara(SysPara *sysPara); + private: Ui::SystemUpdate *ui; void applyStyleSheet(); // 应用样式表 + DlgMutiLanguage dlgLanguage; + signals: void sendButtonClickedSignal(int index); @@ -38,6 +44,8 @@ private slots: void on_pushButtonUpdateSoftware_clicked(); void on_pushButtonUpdateCharLib_clicked(); void on_closeBtn_clicked(); + void on_pushButtonFontToUdisk_clicked(); + void on_pushButtonInterFace_clicked(); }; #endif // SYSTEMUPDATE_H diff --git a/SystemUpdate.ui b/SystemUpdate.ui index d180698..98f25b5 100644 --- a/SystemUpdate.ui +++ b/SystemUpdate.ui @@ -38,107 +38,144 @@ - + - 100 - 130 - 601 - 268 + 80 + 190 + 614 + 128 - - - - - - - - 0 - 60 - - - - - 200 - 16777215 - - - - 烧录FPGA - - - - - - - - 0 - 60 - - - - - 200 - 16777215 - - - - 更新软件 - - - - :/icon/updatesoftware.png:/icon/updatesoftware.png - - - - + + + + + + 200 + 60 + + + + + 200 + 16777215 + + + + 烧录FPGA + + - - - - - - - 0 - 60 - - - - - 200 - 16777215 - - - - 烧录单片机软件 - - - - - - - - 0 - 60 - - - - - 200 - 16777215 - - - - 更新字库 - - - - :/icon/updatefont.png:/icon/updatefont.png - - - - + + + + + 200 + 60 + + + + + 200 + 16777215 + + + + 更新软件 + + + + :/icon/updatesoftware.png:/icon/updatesoftware.png + + + + + + + true + + + + 200 + 60 + + + + + 200 + 16777215 + + + + 界面语言设置 + + + + + + + + 200 + 60 + + + + + 200 + 16777215 + + + + 烧录单片机软件 + + + + + + + + 200 + 60 + + + + + 200 + 16777215 + + + + 更新字库 + + + + :/icon/updatefont.png:/icon/updatefont.png + + + + + + + + 200 + 60 + + + + + 200 + 16777215 + + + + 导出字库 + + + + :/icon/udisk.png:/icon/udisk.png + + diff --git a/chinese.ts b/chinese.ts index 955903d..b308349 100644 --- a/chinese.ts +++ b/chinese.ts @@ -9,161 +9,151 @@ - + 整体设置 - + 变量类型 - - + + 计数器1 - - + + 计数器2 - + 数字个数: - + 1 - + 2 - + 3 - + 4 - + 5 - + 6 - + 7 - + 8 - - + + 字符间距 + + + + + + ← + + + + + + → + + + + + 增量值: - - + + 额外设置 + + + + + 如果预览与打印显示不正确,调整此设置可能恢复。 + + + + + 自定义字符宽度 + + + + + 当前值: - + 可变长度 - - + + 重复数: - + 小数点位数 - - - 重设值 - - - - - + + 结束值: - - + + 起始值: - - - 清零 - - - - - 代替 - - - - - 数据 - - - - - 下 - - - - - 预设值 - - - - - 上 - - - - - 类型 - - - - + ✓ - + ✕ @@ -176,198 +166,198 @@ - + ✓ - + ✕ - + 整体设置 - + 日期/时间 - + 内容 - + 有效期限 - - + + 天数 - + 月 - 精确到日 - + 月 - 精确到月 - + . - + : - + , - + / - + ; - + _ - - + + - - - + + 小时 - + 分钟 - + 秒钟 - - + + 月 - + 年2026 - + 日 - + 年中第几周 - + 年26 - - + + 周几 - + 空格 - + <------ - + + - - + + 代替 - + 名称 - + 数据 - + 年 - + Meridiem - + 类型 - + 上 - + 下 - + 预设值 - + 高级选项 @@ -757,12 +747,12 @@ - + 警告 - + U盘未插入或U盘根目录下的doc文件夹不存在! @@ -770,75 +760,80 @@ DigitalInput - + Form - + 9 - + 3 - + 8 - + - - + 退格 - + 1 - + 4 - + 0 - + + 清零 + + + + + Enter + + + + 5 - + 7 - + 2 - + 6 - - - 全选 - - DlgInputAddr @@ -1190,22 +1185,22 @@ - + 系统 - + U盘 - + ✓ - + ✕ @@ -1232,238 +1227,222 @@ - + mtDate: %1 - + mtInterval: %1 - + mtEndDate: %1 - + mtFlag: %1 - + timeoutDay: %1 - - + + 13.读卡器故障! - + %1/%2/%3 - - + 测试时间结束,准备关机 - + 开始自检,请等待60秒............... - - 开始自检,请等待%1秒............... + + 开始自检,请等待%1秒... - - + + 自检完成!!! - - - + + + 警告 - + 确认要刷墨水卡吗? - - + + 不需要刷墨水卡! - - + + 请先添加墨水再刷墨水卡! - - - + + 刷墨水卡成功! - + 确认要刷溶剂卡吗? - - + + 不需要刷溶剂卡! - - + + 请先添加溶剂再刷溶剂卡! - - - + + 刷溶剂卡成功! - + 确认要刷保养卡吗? - - - + + 刷保养卡成功! - - + + MAC无效卡! - + card data: %1 - + 无效卡,这张卡已经在%1时使用过 - + ink Warning at: %1 - + solvent Warning at: %1 - - 压力泄漏或压力传感器故障! - - - - - - + + 电机故障 - - 电机故障!!! - - - - - + + 回收槽到头 - - + 回收槽卡住或者回收槽开关时间设置错误 - + 错误!粘度计故障:检测不到上位灯 - + 压力过高,请检查管路是否堵塞,然后点击故障恢复按钮 - + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! - + 墨水液位报警超过48小时,机器无法正常打印,请先添加原厂墨水再刷墨水卡,以恢复喷码机的正常工作! - + 请刷溶剂卡,请使用原厂溶剂耗材,否则机器将在%1小时后禁止使用! - + 溶剂液位报警超过48小时,机器无法正常打印,请先添加溶剂再刷溶剂卡以恢复喷码机的正常工作! - + 保养期还有%1天到期,请及时保养,否则喷码机容易损坏 - + 保养期已超过%1天,请进行保养以恢复喷码机的正常使用 - + 刷卡倒计时起始时间文件不存在 - + 请稍候 - - + + 刷溶剂卡倒计时: %1 秒 @@ -1476,421 +1455,421 @@ - + 1 书 - + 2 输 - + 3 数 - + 4 属 - + 5 熟 - + 上一页 - + 下一页 - + ` - + 1 - + 2 - + 3 - + 4 - + 5 - + 6 - + 7 - + 8 - + 9 - + 0 - + - - + = - + 退格 - - + + 英文 - + q - + w - + e - + r - + t - + y - + u - + i - + o - + p - + [ - + ] - + \ - - + + 大写 - + a - + s - + d - + f - + g - + h - + j - + k - + l - + ; - + ' - + Enter - + Shift - + z - + x - + c - + v - + b - + n - + m - + , - + . - + / - + 上 - + 特殊字 - + 隐藏 - + Ctrl - + 删除 - + 行首 - + 行尾 - + 左 - + 下 - + 右 - - + + 错误 - + hanziDisplayLabels缺少初始化 - + warning - + myInputMethod is null - + 找不到输入法初始化文件 - + 小写 - + Tiếng Việt - + Russian - + Japanese - + 全选 - + 复制 - + 粘贴 - + 剪切 - + 后退 @@ -1941,16 +1920,16 @@ - - + + ← - - + + → @@ -1985,7 +1964,7 @@ - + 字符间距 @@ -2011,7 +1990,7 @@ - + ✕ @@ -2037,7 +2016,7 @@ - + TextLabel @@ -2052,72 +2031,72 @@ - + 粘度 - + 高压包 - + 隔膜位置 - + 压力 - + 墨线开关 - - 喷头盖开 + + 喷嘴逆清洗 - + 墨水缸满 - + 墨水液位 - + 溶剂液位 - + 回收故障 - + 粘度故障 - + 相位故障 - + 高压故障 - + 故障恢复 @@ -2132,64 +2111,69 @@ - - - - - + + + + + 警告 - - - + + + 无法打开文件 - - - - + + + + 提示 - + 是否确认将所有日志文件导出到U盘? - + U盘目录创建失败 - + U盘未插入或无法识别,请重新插拔设备! - + 成功导出到U盘 - + 选择历史记录文件 - + 是否确认将历史日志文件全部清除? - + 是否确认将当前日志全部清除? + + + 清洗中,界面锁死 + + MainInstruction @@ -2198,218 +2182,99 @@ Form + + + 网口通信 + + + + + 时间设置 + + - 文件 + 服务 + 文件 - - 重置所有计数器 - - - - - 建立新文件单 - - - - - 调入文件喷印 - - - - - 建立新文件 - - - - - 打开文件进行编辑 - - - - - 编辑当前文件 - - - - - 保存计数器 - - - - - 额外 - - - - - Delete extern text memory - - - - - 建立快捷功能键 - - - - - 产品计数器设置 - - - - - 直接启动喷印 - - - - - 脱离 - - - - + 图形编辑器 - - 管理器 - - - - - 设置 - - - - - 液压设置 - - - - - 启用口令保护 - - - - - 输入/输出设置 - - - - - 接口设置 - - - - - 口令设置 - - - - + 基本设置 - + 服务 - - 信息 - - - - - 输入/输出信号检验 - - - - - 数据记录 - - - - - 试喷 - - - - + 系统设置 - + 系统管理 - - 触摸校准 - - - - + 其他设置 - + 设置保养间隔 - - 液压/喷头 - - - - + 系统更新 - + 系统授权 - + ✕ - + mtDate1: %1 - + mtInterval1: %1 - + mtEndDate1: %1 - + mtFlog1: %1 - + 提示 - + RFID卡清零! @@ -2417,405 +2282,382 @@ MainWidget - + background-color:#6A7289; - + 编辑当前文件 - + 调入文件喷印 - + 主指令单 - + 管理器 - + 信息 - + background-color:#BCBFC4; - + background-color:#CACCC9; - - - + + background-color:#BBBBBD;border-radius:3px; - - - + + + 0 + + + + + 达到数量后停止: + + + + + 开始打印 + + + + color:#000000;font-size:18px; - - 喷头盖已盖上 - - - - - 墨剂开启 - - - - + 速度 米/分 - + color:#3CB371;font-size:18px; - + 当前 - + color:#E72F28;font-size:18px; - + 最大 - + color:#3CB371;font-size:24px; - + 0007.9 - + color:#E72F28;font-size:24px; - + 0020.3 - - color:#000000;font-size:18px;padding-left:20px; + + 停止打印 - + + 喷嘴开启 + + + + + 喷嘴关闭 + + + + 产品计数器 - - 00000000 - - - - + color:#000000;font-size:28px;font-weight:bold; - - 0000000000 - - - - - - - background-color:#C5C4BF;border-radius:3px; - - - - - - - - - + border:0px; - - - - - - - + + + + + + + 警告 - + 回收槽未关,是否关闭回收槽后关机! - + 是否确认关机? - - - - 正在准备关机,请等待%1秒............... - - - - - 准备关机...... - - - - - 关机失败!!! - - - - + 最多支持的列数目为:%1请减小信息长度. - - - - + + 变量数大于8个,某些变量将不起作用!!! - - + + 请减少信息中的变量(或计数器)数量. - + warning,界面上有变量未显示完全 - - - - + + + + 错误 - + 喷头盖未关,请先关喷头盖! - + 墨线未开,请先开墨线开关! - + 当前总列数 %1 ,支持的总列数为 %2,请减少打印串的长度 - + 打印耗时 %1ms ,触发间隔 :%2ms ,触发间隔至少应当大于打印耗时3ms - - 开始打印1 + + + 高压故障 - + + + 相位故障 + + + + + + 粘度故障 + + + + + + 回收故障 + + + + + + 溶液液位 + + + + + + 墨水液位 + + + + + + 墨水缸满 + + + + + + 墨线开关 + + + + + 正常 + + + + 提示 - + 随机码文本将展出到U盘,请插入U盘 - - 正在排气 ............... - - - - + 正在打开回收槽... - + 停止打开 - - + + 回收槽之前发生阻塞或回收槽时间设置错误,是否强制将当前位置设为到顶位置? - + 正在关闭回收槽... - + 停止关闭 - - + + %1.%2 - - 回收槽未到底!!!!!! - - - - - - - 正在喷印............... - - - - - - 暂停喷印............... - - - - - 喷头盖开, 喷印无法正常进行!!! - - - - + 墨水缸满报警 - + 墨水液位报警 - + 溶剂液位报警 - - + 高压故障,暂停打印 - + 高压故障,暂停打印. - + 高压故障,关回收槽 - - 高压故障,关回收槽和墨线 - - - - - + 回收故障,关闭回收槽,关墨线 - - 回收故障. - - - - + 回收异常,墨线可能偏离.(%1) - + 相位故障:飞行时间错误! - + 相位故障:相位检测错误! - - - + + 相位故障,准备关机 - - - + + 相位故障,暂停打印 - + 相位故障,屏蔽DAC输出 - - + 相位故障,屏蔽充电 @@ -3151,268 +2993,258 @@ p, li { white-space: pre-wrap; } - - 使用齿轮泵 - - - - - 使用回收泵 - - - - + 信息上下颠倒 - + 信息左右颠倒 - + PrintGo信号页1 - + 脉冲信号值: - + 无镜像打印 - + 自动水平翻转 - + 自动垂直翻转 - + 中心对称旋转 - + 镜象交替类型 - - - - + + + + 延时(毫秒): - + 镜像交替间隔 - - - + + + 触发延时(毫秒) - + 脉冲输出使能 - + 禁止电眼清零 - + 允许电眼复位 - + 允许电眼立即复位 - + 电眼清零 - + 字符宽度: - + 产生脉冲所需计数: - + 间隔模式: - + 行末<->行首 - + 行首<->行首 - + PrintGo信号页2 - - - - + + + + 重复间隔(毫秒) - + 重复次数 - - + + 封锁时间(毫秒) - + 同步器清零 - + 同步打印 - + 电眼信号来源 - - + + 内部 - - + + 外部 - + 光电边沿触发 - + 光电电平触发 - + GroupBox - + 延时触发 - + 编码器参数 - + 脉冲数/毫米 - + 脉冲数修正 - + 喷印间隔(毫米) - + 同步喷印模式 - + 按字符宽度 - + 按喷印比例 - + 同步器正反转打印 - + 同步器只正转打印 - + 同步器只反转打印 - + 同步器触发 - + 同步器来源 - + ✕ - + ✓ @@ -3427,54 +3259,54 @@ p, li { white-space: pre-wrap; } - + 提示:参数不正确 - + 要求:触发长度小于喷印间隔 - - - - + + + + 延时(毫米): - - - + + + 触发延时(毫米) - - + + 重复间隔(毫米) - - + + 封锁间隔(毫米) - + 封锁间隔(毫秒) - + 字符宽度 - + 喷印比例(%) @@ -3763,123 +3595,123 @@ p, li { white-space: pre-wrap; } - + ✓ - + ✕ - + 整体设置 - - - + + + 班时编号 - - + + 班时时间 - - + + 新建行 - + 标号 - + 1 - + 00:00 - + A - + 2 - + 08:09 - + B - + 3 - + 12:00 - + C - + 可选用的班次时间: - + 23 - - + + ← - - + + → - + 添加 - + 移除 - + hh:mm @@ -3915,15 +3747,30 @@ p, li { white-space: pre-wrap; } - + 采用预设值 - + 确认 + + + 预设值: + + + + + 当前值: + + + + + 采用当前值 + + SystemManage @@ -3933,540 +3780,475 @@ p, li { white-space: pre-wrap; } - + 手动控制泵阀 - + 齿轮泵关 - + 齿轮泵开 - + 回收槽开 - - - - - - - - - - + + + + + + + + + + 停止 - + 回收槽关 - + 粘度泵 - + 混合阀 - + 回收泵 - + 主墨泵 - - + + 压缩机 - + 泄压阀 - + 墨水阀 - + 循环阀 - - 切换键盘 - - - - - 更新字库 - - - - - 导出字库 - - - - + 环境配置 - - 烧录单片机软件 - - - - - 时间设置 - - - - - 导出配置到U盘 - - - - - 从U盘导入配置 - - - - + 重启 - + 排气 - - 烧录FPGA - - - - - 更新软件 - - - - + ✕ - - - - - + + + + + 自动 - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + 开 - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + 关 - - - - - - - - - - - + + + + + + + + + + 警告 - + 是否确认进入手动模式? - + 请先确认已经关闭回收槽,确认进入自动模式? - - - - + + + + 手动 - - - + + + 请先移开喷头盖! - - - - - - - - + + + + + + + + 启动 - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + 提示 - - - - + + + + 密码不正确! - + Application - + 是否确认更新字库? - + 没找到对应字库,更新失败! - + 更新字库成功,重启后生效! - + 恢复出厂设置成功,请重新关机上电 - + 校准触摸屏 - + 是否确认开始校准程序?请小心进行校准! - + 是否确认更新软件? - - - - - - - - - - + + + + + + + + + 错误 - + 更新失败! - + 软件更新成功,重启后生效! - + 找不到更新软件! - + 是否确认更新系统? - + 系统更新成功,重启后生效! - + 文件不存在! - + 如果开始清洗,务必确认回收槽已经打开10毫米以上,并且在一分钟后将停止清洗 - + 开始清洗 - + 停止清洗 - + 压力 - + autoclean cancel or status: - + (2/3) Cleaning - + (3/3) Cleaning - + 是否确认导出配置到U盘? - + 检测不到U盘 - + 成功导出配置到U盘 - + 是否确认从U盘导入配置? - + 配置文件/udisk/sysPara.bin不存在! - + 从U盘成功导入配置,重启后生效! - + autoclean start - - 是否确认导出字库到U盘? - - - - - U盘不可识别! - - - - - 字库导出完成! - - - - + 是否开始电机测试? - + Cancel - + 正在排气,是否停止? - + 确定要升级FPGA软件吗? - + 找不到 lib.tar! - + 无法删除旧的 lib.tar! - + 复制 tar 包失败! - + 解压失败,请检查权限! - + 移动库文件失败! - + 环境配置成功! - + 切换失败! - + 切换成功,重启后生效! - + 找不到软件! - + 找到多个软件,请删除多余的文件,只保留一个! - + 确定要升级单片机软件吗? - + 升级成功,请重启QtUI! - + 升级失败! @@ -4720,117 +4502,97 @@ p, li { white-space: pre-wrap; } - + 重置高压 - - 界面语言设置 - - - - + 喷嘴逆清洗 - + ✓ - + ✕ - - + + 错误 - + 实际频率不能为%1 - - + + 提示 - + 应用成功 - + 自动清洗时间约为一分钟,然后自动停止 - + 开始清洗 - + 停止清洗 - + 正在喷嘴逆清洗...... - + 清洗完成 - + Application - + 是否更新高压包电流数据? - + 喷头盖未关,请先关喷头盖! - + Oscillator voltage %1 --- 最长高电平时钟 %2 - + 最佳晶振电压完成 - - - Tiếng Việt(Vietnamese interface) - - - - - Chinese interface(中文界面) - - - - - English interface(英文界面) - - SystemUpdate @@ -4845,25 +4607,65 @@ p, li { white-space: pre-wrap; } - + 烧录FPGA - + 更新软件 - + + 界面语言设置 + + + + 烧录单片机软件 - + 更新字库 + + + 导出字库 + + + + + 警告 + + + + + 是否确认导出字库到U盘? + + + + + 错误 + + + + + U盘不可识别! + + + + + 提示 + + + + + 字库导出完成! + + TestPrintWidget @@ -4873,40 +4675,14 @@ p, li { white-space: pre-wrap; } - - QWidget { font-family: Arial; font-size: 12px; } - - - - - - - - - - - QPushButton { - border: 1px solid #cccccc; border-radius:8px; - padding: 10px; - font-size: 14px; - text-align: center; - } - QPushButton:checked { - border: 2px solid #0078d7; - background-color: #f0f8ff; - } - - - - - + + background-color:#828E9E; - - - + + QPushButton { background: qlineargradient(x1: 0.5, y1: 0, x2: 0.5, y2: 1, stop: 0 #6F9CD6, stop: 1 #FFFFFF); border: 1px solid #a0a0a0; @@ -4924,14 +4700,13 @@ p, li { white-space: pre-wrap; } - + background-color:#C4C5C9; - - - + + QPushButton { background-color: #ffffff; border: 1px solid #a8a8a8; @@ -4947,64 +4722,112 @@ p, li { white-space: pre-wrap; } - - QComboBox { - background-color: #e5e5e5; - border: 1px solid #a8a8a8; - border-radius: 2px; - padding: 4px 20px 4px 8px; - icon-size:60px 60px; - } - QComboBox::drop-down { width: 30px; } + + 文字 - - 5点(英) + + 条形码 - - 7点(英) + + 图标 - - 9点(英) + + 日期时间 - - 12点(英) + + 计数器 - - 16点(英) + + 轮班 - - 24点(英) + + 保存 - - 32点(英) + + 打印设置 - + + 图元设置 + + + + + 复制 + + + + + 粘贴 + + + + + 删除 + + + + + 5 dot + + + + + 7 dot + + + + + 9 dot + + + + + 12 dot + + + + + 16 dot + + + + + 24 dot + + + + + 32 dot + + + + UK - + US - + QLineEdit { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -5016,13 +4839,13 @@ p, li { white-space: pre-wrap; } - + JET2neo-TEST - - + + QPushButton { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -5041,19 +4864,19 @@ p, li { white-space: pre-wrap; } - + << - + >> - - - + + + QLabel { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -5066,20 +4889,20 @@ p, li { white-space: pre-wrap; } - + Y:9 - + X:105 - - - - + + + + QPushButton { background-color: #87CEEB; border: 1px solid #4682B4; @@ -5099,42 +4922,42 @@ p, li { white-space: pre-wrap; } - + ↑ - + ← - + → - + ↓ - + ID:1 - + ✓ - + 提示 - + 是否保存文件? @@ -5190,121 +5013,111 @@ p, li { white-space: pre-wrap; } - + 高度 - + 宽度 - + 图像裁剪 - + 缩小 - + 放大 - + 图像扩张 - + 保存为 - + 新建 - + 打开 - - - + + + 保存 - - 导入 - - - - - A - - - - + 编辑图案 - + ✕ - + 提示 - + 图片已经改变,是否保存? - + 放弃保存 - - - + + + 放大倍数:%1 - + 图片另存为... - + 另存为 - + 打开文件 - + 图片保存为... - + 导入文件 @@ -5481,18 +5294,18 @@ p, li { white-space: pre-wrap; } zkWidget - - + + 警告 - + 最大支持宽度:%1 高度:%2 当前请求:%3 x %4 - + 请新创建建图片 diff --git a/countervarset.ui b/countervarset.ui index ceb8b7c..d6af29f 100644 --- a/countervarset.ui +++ b/countervarset.ui @@ -14,104 +14,7 @@ Form - QPushButton#closeBtn, QPushButton#checkBtn{ - background-color: #E6F7FF; - border: 1px solid #87CEEB; - border-radius: 4px; - font-size: 24px; - color: #228B22; - } - QPushButton#closeBtn:hover,QPushButton#checkBtn:hover{ - background-color: #D1E9FF; - } - - QPushButton#closeBtn:pressed,QPushButton#checkBtn:pressed{ - background-color: #BAE7FF; - } - - QPushButton { - background-color: #5396C1; - color: #ffffff; - border: 1px solid #000000; - border-radius: 3px; - font-size: 18px; - font-weight:500; - width: 180px; - height: 90px; - } - - QPushButton:hover { - background-color: #5396C1; - } - - QPushButton:disabled { - background-color: #7C828E; - color: #606060; - border-color: #808080; - } - -QComboBox { - border: 1px solid #000000; - border-radius: 3px; - font-size: 14px; - width: 180px; - height: 90px; - padding-left: 10px; /* 文字左边距,避免紧贴边缘 */ -} - -/* 下拉箭头区域 */ -QComboBox::drop-down { - border: 1px solid #333333; - border-radius: 3px; - width: 30px; /* 箭头区域宽度 */ - background-color: #5396C1; -} - -/* 下拉箭头图标 */ -QComboBox::down-arrow { - image: url(image/down_white.png); - width: 16px; /* 图标显示宽度 */ - height: 16px; /* 图标显示高度 */ -} - -/* 悬停状态 */ -QComboBox:hover { - background-color: #efefef; -} - -// 下拉框 -QComboBox QAbstractItemView { - border: 1px solid #000000; - border-radius: 3px; - font-size: 14px; - selection-background-color: #5396C1; /* 选中项背景色(稍深) */ - selection-color: #ffffff; -} - -QSpinBox::up-button { - width: 16px; /* 图标显示宽度 */ - height: 16px; /* 图标显示高度 */ - border: 1px solid #333333; - border-radius: 3px; - background-color: #5396C1; -} - -QSpinBox::up-arrow { - image: url(image/up_white.png); -} - -QSpinBox::down-button { - width: 16px; /* 图标显示宽度 */ - height: 16px; /* 图标显示高度 */ - border: 1px solid #333333; - border-radius: 3px; - background-color: #5396C1; -} - -QSpinBox::down-arrow { - image: url(image/down_white.png); -} - + diff --git a/datevarset.ui b/datevarset.ui index d309b6f..13af6c0 100644 --- a/datevarset.ui +++ b/datevarset.ui @@ -14,80 +14,7 @@ Form - QPushButton#closeBtn, QPushButton#checkBtn{ - background-color: #E6F7FF; - border: 1px solid #87CEEB; - border-radius: 4px; - font-size: 24px; - color: #228B22; - } - QPushButton#closeBtn:hover,QPushButton#checkBtn:hover{ - background-color: #D1E9FF; - } - - QPushButton#closeBtn:pressed,QPushButton#checkBtn:pressed{ - background-color: #BAE7FF; - } - - QPushButton { - background-color: #5396C1; - color: #ffffff; - border: 1px solid #000000; - border-radius: 3px; - font-size: 18px; - font-weight:500; - width: 180px; - height: 90px; - } - - QPushButton:hover { - background-color: #5396C1; - } - - QPushButton:disabled { - background-color: #7C828E; - color: #606060; - border-color: #808080; - } - -QComboBox { - border: 1px solid #000000; - border-radius: 3px; - font-size: 14px; - width: 180px; - height: 90px; - padding-left: 10px; /* 文字左边距,避免紧贴边缘 */ -} - -/* 下拉箭头区域 */ -QComboBox::drop-down { - border: 1px solid #333333; - border-radius: 3px; - width: 30px; /* 箭头区域宽度 */ - background-color: #5396C1; -} - -/* 下拉箭头图标 */ -QComboBox::down-arrow { - image: url(image/down_white.png); - width: 16px; /* 图标显示宽度 */ - height: 16px; /* 图标显示高度 */ -} - -/* 悬停状态 */ -QComboBox:hover { - background-color: #efefef; -} - -// 下拉框 -QComboBox QAbstractItemView { - border: 1px solid #000000; - border-radius: 3px; - font-size: 14px; - selection-background-color: #5396C1; /* 选中项背景色(稍深) */ - selection-color: #ffffff; -} - + @@ -123,8 +50,8 @@ QComboBox QAbstractItemView { 20 10 - 781 - 461 + 771 + 472 diff --git a/dlgQrCode.cpp b/dlgQrCode.cpp index b384a42..f69f41c 100644 --- a/dlgQrCode.cpp +++ b/dlgQrCode.cpp @@ -633,7 +633,7 @@ void dlgQrCode::setCntCheckBoxHide(bool hideEn){ } } -void dlgQrCode::setSysPara(SysPara * sysPara) +void dlgQrCode::bindSysPara(SysPara * sysPara) { this->sysPara = sysPara; } diff --git a/dlgQrCode.h b/dlgQrCode.h index caa5a1e..8523f6d 100644 --- a/dlgQrCode.h +++ b/dlgQrCode.h @@ -39,7 +39,7 @@ public: void setCntCheckBoxHide(bool hideEn); QString getCounterText( int counter,int QRCntNum); void MatrixEnCode(unsigned char *intext,int Size); - void setSysPara(SysPara * sysPara); + void bindSysPara(SysPara * sysPara); void bindTxTEdit(QTextEdit *textEdit); public slots: diff --git a/dlgmutilanguage.cpp b/dlgmutilanguage.cpp index 04b372b..54ebe8a 100644 --- a/dlgmutilanguage.cpp +++ b/dlgmutilanguage.cpp @@ -2,6 +2,8 @@ #include "ui_dlgmutilanguage.h" #include "InputMethod.h" #include +#include +#include #include DlgMutiLanguage::DlgMutiLanguage(QWidget *parent) : @@ -9,7 +11,7 @@ DlgMutiLanguage::DlgMutiLanguage(QWidget *parent) : ui(new Ui::DlgMutiLanguage) { ui->setupUi(this); -// ui->listWidget->hide(); + // ui->listWidget->hide(); connect(ui->buttonBox,SIGNAL(accepted()),this,SLOT(SetNewLanguage())); LangIndex=INPUT_METHOD_TYPE_CHINESE; } @@ -32,89 +34,110 @@ void DlgMutiLanguage::setCurrentLanguage(){ } int DlgMutiLanguage::getCurrentLanguage(){ -// LangIndex = INPUT_METHOD_TYPE_CHINESE; -// if(ui->radioButton_2->isChecked()) { -// LangIndex = INPUT_METHOD_TYPE_ENGLISH; -// QMessageBox::information(this,tr("提示"),tr("重启后切换到英文界面")); -// buf.append("English\r\n"); -// buf.append("WINPY_utf8.txt\r\n"); -// } -// else if(ui->radioButton_3->isChecked()) { -// LangIndex = INPUT_METHOD_TYPE_VIETNAM; -// QMessageBox::information(this,tr("提示"),tr("重启后切换到越南语界面")); -// buf.append("Vietnamese\r\n"); -// buf.append("YN_utf8.txt\r\n"); -// } -// /*else if(ui->radioButton->isChecked()) { + // LangIndex = INPUT_METHOD_TYPE_CHINESE; + // if(ui->radioButton_2->isChecked()) { + // LangIndex = INPUT_METHOD_TYPE_ENGLISH; + // QMessageBox::information(this,tr("提示"),tr("重启后切换到英文界面")); + // buf.append("English\r\n"); + // buf.append("WINPY_utf8.txt\r\n"); + // } + // else if(ui->radioButton_3->isChecked()) { + // LangIndex = INPUT_METHOD_TYPE_VIETNAM; + // QMessageBox::information(this,tr("提示"),tr("重启后切换到越南语界面")); + // buf.append("Vietnamese\r\n"); + // buf.append("YN_utf8.txt\r\n"); + // } + // /*else if(ui->radioButton->isChecked()) { -// } -// else if(ui->radioButton->isChecked()) { + // } + // else if(ui->radioButton->isChecked()) { -// } -// else if(ui->radioButton->isChecked()) { + // } + // else if(ui->radioButton->isChecked()) { -// }*/ -// else { -// QMessageBox::information(this,tr("提示"),tr("重启后切换到中文界面")); -// buf.append("Chinese\r\n"); -// buf.append("WINPY_utf8.txt\r\n"); -// } + // }*/ + // else { + // QMessageBox::information(this,tr("提示"),tr("重启后切换到中文界面")); + // buf.append("Chinese\r\n"); + // buf.append("WINPY_utf8.txt\r\n"); + // } return LangIndex; } void DlgMutiLanguage::SetNewLanguage(){ - LangIndex = INPUT_METHOD_TYPE_CHINESE; + LangIndex = INPUT_METHOD_TYPE_CHINESE; - QFile file("/home/plg/UseEn"); + QFile file("/home/plg/UseEn"); - QByteArray buf; - buf.clear(); + QByteArray buf; + buf.clear(); - if(file.open(QIODevice::ReadWrite)) {//怀疑是QIODevice::Truncate 引起参数错误,去掉试试看 + if(file.open(QIODevice::ReadWrite)) {//怀疑是QIODevice::Truncate 引起参数错误,去掉试试看 - if(ui->radioButton_2->isChecked()) { - LangIndex = INPUT_METHOD_TYPE_ENGLISH; - buf.append("English\r\n"); - buf.append("WINPY_utf8.txt\r\n"); + if(ui->radioButton_2->isChecked()) { + LangIndex = INPUT_METHOD_TYPE_ENGLISH; + buf.append("English\r\n"); + buf.append("WINPY_utf8.txt\r\n"); + } + else if(ui->radioButton_3->isChecked()) { + LangIndex = INPUT_METHOD_TYPE_VIETNAM; + buf.append("Turkish\r\n"); + buf.append("WINPY_utf8.txt\r\n"); + } + else if(ui->radioButton_4->isChecked()) { + LangIndex = INPUT_METHOD_TYPE_SPANISH; + buf.append("Spanish\r\n"); + buf.append("WINPY_utf8.txt\r\n"); + } + else if(ui->radioButton_5->isChecked()) { + LangIndex = INPUT_METHOD_TYPE_THAI; + buf.append("Thai\r\n"); + buf.append("WINPY_utf8.txt\r\n"); + } + else if(ui->radioButton_6->isChecked()) { + LangIndex = INPUT_METHOD_TYPE_VIETNAM; + buf.append("Vietnamese\r\n"); + buf.append("WINPY_utf8.txt\r\n"); + } + else if(ui->radioButton_7->isChecked()) { + LangIndex = INPUT_METHOD_TYPE_Farsi; + buf.append("Farsi\r\n"); + buf.append("WINPY_utf8.txt\r\n"); + } + else if(ui->radioButton_korean->isChecked()){ + LangIndex = INPUT_METHOD_TYPE_KOREAN; + buf.append("Korean\r\n"); + buf.append("WINPY_utf8.txt\r\n"); + } + else { + buf.append("Chinese\r\n"); + buf.append("WINPY_utf8.txt\r\n"); + } + file.write(buf); + fsync(file.handle()); + file.close(); + } - else if(ui->radioButton_3->isChecked()) { - LangIndex = INPUT_METHOD_TYPE_VIETNAM; - buf.append("Turkish\r\n"); - buf.append("WINPY_utf8.txt\r\n"); + // 提示重启 + QMessageBox::StandardButton ret = QMessageBox::information(this, tr("提示"), + tr("是否重启?"), + QMessageBox::Ok); + if (ret == QMessageBox::Ok) { + sysPara->saveParaToFile(); // 关机前将相关配置保存 + sysPara->saveRFIDPara(); + mySleep(200); + system("sync");//缓存同步 + QCoreApplication::quit(); } - else if(ui->radioButton_4->isChecked()) { - LangIndex = INPUT_METHOD_TYPE_SPANISH; - buf.append("Spanish\r\n"); - buf.append("WINPY_utf8.txt\r\n"); - } - else if(ui->radioButton_5->isChecked()) { - LangIndex = INPUT_METHOD_TYPE_THAI; - buf.append("Thai\r\n"); - buf.append("WINPY_utf8.txt\r\n"); - } - else if(ui->radioButton_6->isChecked()) { - LangIndex = INPUT_METHOD_TYPE_VIETNAM; - buf.append("Vietnamese\r\n"); - buf.append("WINPY_utf8.txt\r\n"); - } - else if(ui->radioButton_7->isChecked()) { - LangIndex = INPUT_METHOD_TYPE_Farsi; - buf.append("Farsi\r\n"); - buf.append("WINPY_utf8.txt\r\n"); - } - else if(ui->radioButton_korean->isChecked()){ - LangIndex = INPUT_METHOD_TYPE_KOREAN; - buf.append("Korean\r\n"); - buf.append("WINPY_utf8.txt\r\n"); - } - else { - buf.append("Chinese\r\n"); - buf.append("WINPY_utf8.txt\r\n"); - } - file.write(buf); - fsync(file.handle()); - file.close(); +} + +void DlgMutiLanguage::mySleep(unsigned int msec) +{ + QTime dieTime = QTime::currentTime().addMSecs(msec); + + while( QTime::currentTime() < dieTime ) + + QCoreApplication::processEvents(QEventLoop::AllEvents, 100); - } } diff --git a/dlgmutilanguage.h b/dlgmutilanguage.h index 35abb4e..38dcf51 100644 --- a/dlgmutilanguage.h +++ b/dlgmutilanguage.h @@ -1,13 +1,16 @@ #ifndef DLGMUTILANGUAGE_H #define DLGMUTILANGUAGE_H +#include "ParaSettingUI.h" +#include "SysPara.h" + #include namespace Ui { class DlgMutiLanguage; } -class DlgMutiLanguage : public QDialog +class DlgMutiLanguage : public QDialog,public ParaSettingUI { Q_OBJECT @@ -23,6 +26,7 @@ public slots: private: Ui::DlgMutiLanguage *ui; + void mySleep(unsigned int msec); }; #endif // DLGMUTILANGUAGE_H diff --git a/doc/main.md b/doc/main.md new file mode 100644 index 0000000..f4590ad --- /dev/null +++ b/doc/main.md @@ -0,0 +1 @@ +## [InkJetPrinter](../InkJetPrinter.h) diff --git a/english.ts b/english.ts index 955903d..b308349 100644 --- a/english.ts +++ b/english.ts @@ -9,161 +9,151 @@ - + 整体设置 - + 变量类型 - - + + 计数器1 - - + + 计数器2 - + 数字个数: - + 1 - + 2 - + 3 - + 4 - + 5 - + 6 - + 7 - + 8 - - + + 字符间距 + + + + + + ← + + + + + + → + + + + + 增量值: - - + + 额外设置 + + + + + 如果预览与打印显示不正确,调整此设置可能恢复。 + + + + + 自定义字符宽度 + + + + + 当前值: - + 可变长度 - - + + 重复数: - + 小数点位数 - - - 重设值 - - - - - + + 结束值: - - + + 起始值: - - - 清零 - - - - - 代替 - - - - - 数据 - - - - - 下 - - - - - 预设值 - - - - - 上 - - - - - 类型 - - - - + ✓ - + ✕ @@ -176,198 +166,198 @@ - + ✓ - + ✕ - + 整体设置 - + 日期/时间 - + 内容 - + 有效期限 - - + + 天数 - + 月 - 精确到日 - + 月 - 精确到月 - + . - + : - + , - + / - + ; - + _ - - + + - - - + + 小时 - + 分钟 - + 秒钟 - - + + 月 - + 年2026 - + 日 - + 年中第几周 - + 年26 - - + + 周几 - + 空格 - + <------ - + + - - + + 代替 - + 名称 - + 数据 - + 年 - + Meridiem - + 类型 - + 上 - + 下 - + 预设值 - + 高级选项 @@ -757,12 +747,12 @@ - + 警告 - + U盘未插入或U盘根目录下的doc文件夹不存在! @@ -770,75 +760,80 @@ DigitalInput - + Form - + 9 - + 3 - + 8 - + - - + 退格 - + 1 - + 4 - + 0 - + + 清零 + + + + + Enter + + + + 5 - + 7 - + 2 - + 6 - - - 全选 - - DlgInputAddr @@ -1190,22 +1185,22 @@ - + 系统 - + U盘 - + ✓ - + ✕ @@ -1232,238 +1227,222 @@ - + mtDate: %1 - + mtInterval: %1 - + mtEndDate: %1 - + mtFlag: %1 - + timeoutDay: %1 - - + + 13.读卡器故障! - + %1/%2/%3 - - + 测试时间结束,准备关机 - + 开始自检,请等待60秒............... - - 开始自检,请等待%1秒............... + + 开始自检,请等待%1秒... - - + + 自检完成!!! - - - + + + 警告 - + 确认要刷墨水卡吗? - - + + 不需要刷墨水卡! - - + + 请先添加墨水再刷墨水卡! - - - + + 刷墨水卡成功! - + 确认要刷溶剂卡吗? - - + + 不需要刷溶剂卡! - - + + 请先添加溶剂再刷溶剂卡! - - - + + 刷溶剂卡成功! - + 确认要刷保养卡吗? - - - + + 刷保养卡成功! - - + + MAC无效卡! - + card data: %1 - + 无效卡,这张卡已经在%1时使用过 - + ink Warning at: %1 - + solvent Warning at: %1 - - 压力泄漏或压力传感器故障! - - - - - - + + 电机故障 - - 电机故障!!! - - - - - + + 回收槽到头 - - + 回收槽卡住或者回收槽开关时间设置错误 - + 错误!粘度计故障:检测不到上位灯 - + 压力过高,请检查管路是否堵塞,然后点击故障恢复按钮 - + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! - + 墨水液位报警超过48小时,机器无法正常打印,请先添加原厂墨水再刷墨水卡,以恢复喷码机的正常工作! - + 请刷溶剂卡,请使用原厂溶剂耗材,否则机器将在%1小时后禁止使用! - + 溶剂液位报警超过48小时,机器无法正常打印,请先添加溶剂再刷溶剂卡以恢复喷码机的正常工作! - + 保养期还有%1天到期,请及时保养,否则喷码机容易损坏 - + 保养期已超过%1天,请进行保养以恢复喷码机的正常使用 - + 刷卡倒计时起始时间文件不存在 - + 请稍候 - - + + 刷溶剂卡倒计时: %1 秒 @@ -1476,421 +1455,421 @@ - + 1 书 - + 2 输 - + 3 数 - + 4 属 - + 5 熟 - + 上一页 - + 下一页 - + ` - + 1 - + 2 - + 3 - + 4 - + 5 - + 6 - + 7 - + 8 - + 9 - + 0 - + - - + = - + 退格 - - + + 英文 - + q - + w - + e - + r - + t - + y - + u - + i - + o - + p - + [ - + ] - + \ - - + + 大写 - + a - + s - + d - + f - + g - + h - + j - + k - + l - + ; - + ' - + Enter - + Shift - + z - + x - + c - + v - + b - + n - + m - + , - + . - + / - + 上 - + 特殊字 - + 隐藏 - + Ctrl - + 删除 - + 行首 - + 行尾 - + 左 - + 下 - + 右 - - + + 错误 - + hanziDisplayLabels缺少初始化 - + warning - + myInputMethod is null - + 找不到输入法初始化文件 - + 小写 - + Tiếng Việt - + Russian - + Japanese - + 全选 - + 复制 - + 粘贴 - + 剪切 - + 后退 @@ -1941,16 +1920,16 @@ - - + + ← - - + + → @@ -1985,7 +1964,7 @@ - + 字符间距 @@ -2011,7 +1990,7 @@ - + ✕ @@ -2037,7 +2016,7 @@ - + TextLabel @@ -2052,72 +2031,72 @@ - + 粘度 - + 高压包 - + 隔膜位置 - + 压力 - + 墨线开关 - - 喷头盖开 + + 喷嘴逆清洗 - + 墨水缸满 - + 墨水液位 - + 溶剂液位 - + 回收故障 - + 粘度故障 - + 相位故障 - + 高压故障 - + 故障恢复 @@ -2132,64 +2111,69 @@ - - - - - + + + + + 警告 - - - + + + 无法打开文件 - - - - + + + + 提示 - + 是否确认将所有日志文件导出到U盘? - + U盘目录创建失败 - + U盘未插入或无法识别,请重新插拔设备! - + 成功导出到U盘 - + 选择历史记录文件 - + 是否确认将历史日志文件全部清除? - + 是否确认将当前日志全部清除? + + + 清洗中,界面锁死 + + MainInstruction @@ -2198,218 +2182,99 @@ Form + + + 网口通信 + + + + + 时间设置 + + - 文件 + 服务 + 文件 - - 重置所有计数器 - - - - - 建立新文件单 - - - - - 调入文件喷印 - - - - - 建立新文件 - - - - - 打开文件进行编辑 - - - - - 编辑当前文件 - - - - - 保存计数器 - - - - - 额外 - - - - - Delete extern text memory - - - - - 建立快捷功能键 - - - - - 产品计数器设置 - - - - - 直接启动喷印 - - - - - 脱离 - - - - + 图形编辑器 - - 管理器 - - - - - 设置 - - - - - 液压设置 - - - - - 启用口令保护 - - - - - 输入/输出设置 - - - - - 接口设置 - - - - - 口令设置 - - - - + 基本设置 - + 服务 - - 信息 - - - - - 输入/输出信号检验 - - - - - 数据记录 - - - - - 试喷 - - - - + 系统设置 - + 系统管理 - - 触摸校准 - - - - + 其他设置 - + 设置保养间隔 - - 液压/喷头 - - - - + 系统更新 - + 系统授权 - + ✕ - + mtDate1: %1 - + mtInterval1: %1 - + mtEndDate1: %1 - + mtFlog1: %1 - + 提示 - + RFID卡清零! @@ -2417,405 +2282,382 @@ MainWidget - + background-color:#6A7289; - + 编辑当前文件 - + 调入文件喷印 - + 主指令单 - + 管理器 - + 信息 - + background-color:#BCBFC4; - + background-color:#CACCC9; - - - + + background-color:#BBBBBD;border-radius:3px; - - - + + + 0 + + + + + 达到数量后停止: + + + + + 开始打印 + + + + color:#000000;font-size:18px; - - 喷头盖已盖上 - - - - - 墨剂开启 - - - - + 速度 米/分 - + color:#3CB371;font-size:18px; - + 当前 - + color:#E72F28;font-size:18px; - + 最大 - + color:#3CB371;font-size:24px; - + 0007.9 - + color:#E72F28;font-size:24px; - + 0020.3 - - color:#000000;font-size:18px;padding-left:20px; + + 停止打印 - + + 喷嘴开启 + + + + + 喷嘴关闭 + + + + 产品计数器 - - 00000000 - - - - + color:#000000;font-size:28px;font-weight:bold; - - 0000000000 - - - - - - - background-color:#C5C4BF;border-radius:3px; - - - - - - - - - + border:0px; - - - - - - - + + + + + + + 警告 - + 回收槽未关,是否关闭回收槽后关机! - + 是否确认关机? - - - - 正在准备关机,请等待%1秒............... - - - - - 准备关机...... - - - - - 关机失败!!! - - - - + 最多支持的列数目为:%1请减小信息长度. - - - - + + 变量数大于8个,某些变量将不起作用!!! - - + + 请减少信息中的变量(或计数器)数量. - + warning,界面上有变量未显示完全 - - - - + + + + 错误 - + 喷头盖未关,请先关喷头盖! - + 墨线未开,请先开墨线开关! - + 当前总列数 %1 ,支持的总列数为 %2,请减少打印串的长度 - + 打印耗时 %1ms ,触发间隔 :%2ms ,触发间隔至少应当大于打印耗时3ms - - 开始打印1 + + + 高压故障 - + + + 相位故障 + + + + + + 粘度故障 + + + + + + 回收故障 + + + + + + 溶液液位 + + + + + + 墨水液位 + + + + + + 墨水缸满 + + + + + + 墨线开关 + + + + + 正常 + + + + 提示 - + 随机码文本将展出到U盘,请插入U盘 - - 正在排气 ............... - - - - + 正在打开回收槽... - + 停止打开 - - + + 回收槽之前发生阻塞或回收槽时间设置错误,是否强制将当前位置设为到顶位置? - + 正在关闭回收槽... - + 停止关闭 - - + + %1.%2 - - 回收槽未到底!!!!!! - - - - - - - 正在喷印............... - - - - - - 暂停喷印............... - - - - - 喷头盖开, 喷印无法正常进行!!! - - - - + 墨水缸满报警 - + 墨水液位报警 - + 溶剂液位报警 - - + 高压故障,暂停打印 - + 高压故障,暂停打印. - + 高压故障,关回收槽 - - 高压故障,关回收槽和墨线 - - - - - + 回收故障,关闭回收槽,关墨线 - - 回收故障. - - - - + 回收异常,墨线可能偏离.(%1) - + 相位故障:飞行时间错误! - + 相位故障:相位检测错误! - - - + + 相位故障,准备关机 - - - + + 相位故障,暂停打印 - + 相位故障,屏蔽DAC输出 - - + 相位故障,屏蔽充电 @@ -3151,268 +2993,258 @@ p, li { white-space: pre-wrap; } - - 使用齿轮泵 - - - - - 使用回收泵 - - - - + 信息上下颠倒 - + 信息左右颠倒 - + PrintGo信号页1 - + 脉冲信号值: - + 无镜像打印 - + 自动水平翻转 - + 自动垂直翻转 - + 中心对称旋转 - + 镜象交替类型 - - - - + + + + 延时(毫秒): - + 镜像交替间隔 - - - + + + 触发延时(毫秒) - + 脉冲输出使能 - + 禁止电眼清零 - + 允许电眼复位 - + 允许电眼立即复位 - + 电眼清零 - + 字符宽度: - + 产生脉冲所需计数: - + 间隔模式: - + 行末<->行首 - + 行首<->行首 - + PrintGo信号页2 - - - - + + + + 重复间隔(毫秒) - + 重复次数 - - + + 封锁时间(毫秒) - + 同步器清零 - + 同步打印 - + 电眼信号来源 - - + + 内部 - - + + 外部 - + 光电边沿触发 - + 光电电平触发 - + GroupBox - + 延时触发 - + 编码器参数 - + 脉冲数/毫米 - + 脉冲数修正 - + 喷印间隔(毫米) - + 同步喷印模式 - + 按字符宽度 - + 按喷印比例 - + 同步器正反转打印 - + 同步器只正转打印 - + 同步器只反转打印 - + 同步器触发 - + 同步器来源 - + ✕ - + ✓ @@ -3427,54 +3259,54 @@ p, li { white-space: pre-wrap; } - + 提示:参数不正确 - + 要求:触发长度小于喷印间隔 - - - - + + + + 延时(毫米): - - - + + + 触发延时(毫米) - - + + 重复间隔(毫米) - - + + 封锁间隔(毫米) - + 封锁间隔(毫秒) - + 字符宽度 - + 喷印比例(%) @@ -3763,123 +3595,123 @@ p, li { white-space: pre-wrap; } - + ✓ - + ✕ - + 整体设置 - - - + + + 班时编号 - - + + 班时时间 - - + + 新建行 - + 标号 - + 1 - + 00:00 - + A - + 2 - + 08:09 - + B - + 3 - + 12:00 - + C - + 可选用的班次时间: - + 23 - - + + ← - - + + → - + 添加 - + 移除 - + hh:mm @@ -3915,15 +3747,30 @@ p, li { white-space: pre-wrap; } - + 采用预设值 - + 确认 + + + 预设值: + + + + + 当前值: + + + + + 采用当前值 + + SystemManage @@ -3933,540 +3780,475 @@ p, li { white-space: pre-wrap; } - + 手动控制泵阀 - + 齿轮泵关 - + 齿轮泵开 - + 回收槽开 - - - - - - - - - - + + + + + + + + + + 停止 - + 回收槽关 - + 粘度泵 - + 混合阀 - + 回收泵 - + 主墨泵 - - + + 压缩机 - + 泄压阀 - + 墨水阀 - + 循环阀 - - 切换键盘 - - - - - 更新字库 - - - - - 导出字库 - - - - + 环境配置 - - 烧录单片机软件 - - - - - 时间设置 - - - - - 导出配置到U盘 - - - - - 从U盘导入配置 - - - - + 重启 - + 排气 - - 烧录FPGA - - - - - 更新软件 - - - - + ✕ - - - - - + + + + + 自动 - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + 开 - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + 关 - - - - - - - - - - - + + + + + + + + + + 警告 - + 是否确认进入手动模式? - + 请先确认已经关闭回收槽,确认进入自动模式? - - - - + + + + 手动 - - - + + + 请先移开喷头盖! - - - - - - - - + + + + + + + + 启动 - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + 提示 - - - - + + + + 密码不正确! - + Application - + 是否确认更新字库? - + 没找到对应字库,更新失败! - + 更新字库成功,重启后生效! - + 恢复出厂设置成功,请重新关机上电 - + 校准触摸屏 - + 是否确认开始校准程序?请小心进行校准! - + 是否确认更新软件? - - - - - - - - - - + + + + + + + + + 错误 - + 更新失败! - + 软件更新成功,重启后生效! - + 找不到更新软件! - + 是否确认更新系统? - + 系统更新成功,重启后生效! - + 文件不存在! - + 如果开始清洗,务必确认回收槽已经打开10毫米以上,并且在一分钟后将停止清洗 - + 开始清洗 - + 停止清洗 - + 压力 - + autoclean cancel or status: - + (2/3) Cleaning - + (3/3) Cleaning - + 是否确认导出配置到U盘? - + 检测不到U盘 - + 成功导出配置到U盘 - + 是否确认从U盘导入配置? - + 配置文件/udisk/sysPara.bin不存在! - + 从U盘成功导入配置,重启后生效! - + autoclean start - - 是否确认导出字库到U盘? - - - - - U盘不可识别! - - - - - 字库导出完成! - - - - + 是否开始电机测试? - + Cancel - + 正在排气,是否停止? - + 确定要升级FPGA软件吗? - + 找不到 lib.tar! - + 无法删除旧的 lib.tar! - + 复制 tar 包失败! - + 解压失败,请检查权限! - + 移动库文件失败! - + 环境配置成功! - + 切换失败! - + 切换成功,重启后生效! - + 找不到软件! - + 找到多个软件,请删除多余的文件,只保留一个! - + 确定要升级单片机软件吗? - + 升级成功,请重启QtUI! - + 升级失败! @@ -4720,117 +4502,97 @@ p, li { white-space: pre-wrap; } - + 重置高压 - - 界面语言设置 - - - - + 喷嘴逆清洗 - + ✓ - + ✕ - - + + 错误 - + 实际频率不能为%1 - - + + 提示 - + 应用成功 - + 自动清洗时间约为一分钟,然后自动停止 - + 开始清洗 - + 停止清洗 - + 正在喷嘴逆清洗...... - + 清洗完成 - + Application - + 是否更新高压包电流数据? - + 喷头盖未关,请先关喷头盖! - + Oscillator voltage %1 --- 最长高电平时钟 %2 - + 最佳晶振电压完成 - - - Tiếng Việt(Vietnamese interface) - - - - - Chinese interface(中文界面) - - - - - English interface(英文界面) - - SystemUpdate @@ -4845,25 +4607,65 @@ p, li { white-space: pre-wrap; } - + 烧录FPGA - + 更新软件 - + + 界面语言设置 + + + + 烧录单片机软件 - + 更新字库 + + + 导出字库 + + + + + 警告 + + + + + 是否确认导出字库到U盘? + + + + + 错误 + + + + + U盘不可识别! + + + + + 提示 + + + + + 字库导出完成! + + TestPrintWidget @@ -4873,40 +4675,14 @@ p, li { white-space: pre-wrap; } - - QWidget { font-family: Arial; font-size: 12px; } - - - - - - - - - - - QPushButton { - border: 1px solid #cccccc; border-radius:8px; - padding: 10px; - font-size: 14px; - text-align: center; - } - QPushButton:checked { - border: 2px solid #0078d7; - background-color: #f0f8ff; - } - - - - - + + background-color:#828E9E; - - - + + QPushButton { background: qlineargradient(x1: 0.5, y1: 0, x2: 0.5, y2: 1, stop: 0 #6F9CD6, stop: 1 #FFFFFF); border: 1px solid #a0a0a0; @@ -4924,14 +4700,13 @@ p, li { white-space: pre-wrap; } - + background-color:#C4C5C9; - - - + + QPushButton { background-color: #ffffff; border: 1px solid #a8a8a8; @@ -4947,64 +4722,112 @@ p, li { white-space: pre-wrap; } - - QComboBox { - background-color: #e5e5e5; - border: 1px solid #a8a8a8; - border-radius: 2px; - padding: 4px 20px 4px 8px; - icon-size:60px 60px; - } - QComboBox::drop-down { width: 30px; } + + 文字 - - 5点(英) + + 条形码 - - 7点(英) + + 图标 - - 9点(英) + + 日期时间 - - 12点(英) + + 计数器 - - 16点(英) + + 轮班 - - 24点(英) + + 保存 - - 32点(英) + + 打印设置 - + + 图元设置 + + + + + 复制 + + + + + 粘贴 + + + + + 删除 + + + + + 5 dot + + + + + 7 dot + + + + + 9 dot + + + + + 12 dot + + + + + 16 dot + + + + + 24 dot + + + + + 32 dot + + + + UK - + US - + QLineEdit { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -5016,13 +4839,13 @@ p, li { white-space: pre-wrap; } - + JET2neo-TEST - - + + QPushButton { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -5041,19 +4864,19 @@ p, li { white-space: pre-wrap; } - + << - + >> - - - + + + QLabel { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -5066,20 +4889,20 @@ p, li { white-space: pre-wrap; } - + Y:9 - + X:105 - - - - + + + + QPushButton { background-color: #87CEEB; border: 1px solid #4682B4; @@ -5099,42 +4922,42 @@ p, li { white-space: pre-wrap; } - + ↑ - + ← - + → - + ↓ - + ID:1 - + ✓ - + 提示 - + 是否保存文件? @@ -5190,121 +5013,111 @@ p, li { white-space: pre-wrap; } - + 高度 - + 宽度 - + 图像裁剪 - + 缩小 - + 放大 - + 图像扩张 - + 保存为 - + 新建 - + 打开 - - - + + + 保存 - - 导入 - - - - - A - - - - + 编辑图案 - + ✕ - + 提示 - + 图片已经改变,是否保存? - + 放弃保存 - - - + + + 放大倍数:%1 - + 图片另存为... - + 另存为 - + 打开文件 - + 图片保存为... - + 导入文件 @@ -5481,18 +5294,18 @@ p, li { white-space: pre-wrap; } zkWidget - - + + 警告 - + 最大支持宽度:%1 高度:%2 当前请求:%3 x %4 - + 请新创建建图片 diff --git a/farsi.ts b/farsi.ts index 955903d..b308349 100644 --- a/farsi.ts +++ b/farsi.ts @@ -9,161 +9,151 @@ - + 整体设置 - + 变量类型 - - + + 计数器1 - - + + 计数器2 - + 数字个数: - + 1 - + 2 - + 3 - + 4 - + 5 - + 6 - + 7 - + 8 - - + + 字符间距 + + + + + + ← + + + + + + → + + + + + 增量值: - - + + 额外设置 + + + + + 如果预览与打印显示不正确,调整此设置可能恢复。 + + + + + 自定义字符宽度 + + + + + 当前值: - + 可变长度 - - + + 重复数: - + 小数点位数 - - - 重设值 - - - - - + + 结束值: - - + + 起始值: - - - 清零 - - - - - 代替 - - - - - 数据 - - - - - 下 - - - - - 预设值 - - - - - 上 - - - - - 类型 - - - - + ✓ - + ✕ @@ -176,198 +166,198 @@ - + ✓ - + ✕ - + 整体设置 - + 日期/时间 - + 内容 - + 有效期限 - - + + 天数 - + 月 - 精确到日 - + 月 - 精确到月 - + . - + : - + , - + / - + ; - + _ - - + + - - - + + 小时 - + 分钟 - + 秒钟 - - + + 月 - + 年2026 - + 日 - + 年中第几周 - + 年26 - - + + 周几 - + 空格 - + <------ - + + - - + + 代替 - + 名称 - + 数据 - + 年 - + Meridiem - + 类型 - + 上 - + 下 - + 预设值 - + 高级选项 @@ -757,12 +747,12 @@ - + 警告 - + U盘未插入或U盘根目录下的doc文件夹不存在! @@ -770,75 +760,80 @@ DigitalInput - + Form - + 9 - + 3 - + 8 - + - - + 退格 - + 1 - + 4 - + 0 - + + 清零 + + + + + Enter + + + + 5 - + 7 - + 2 - + 6 - - - 全选 - - DlgInputAddr @@ -1190,22 +1185,22 @@ - + 系统 - + U盘 - + ✓ - + ✕ @@ -1232,238 +1227,222 @@ - + mtDate: %1 - + mtInterval: %1 - + mtEndDate: %1 - + mtFlag: %1 - + timeoutDay: %1 - - + + 13.读卡器故障! - + %1/%2/%3 - - + 测试时间结束,准备关机 - + 开始自检,请等待60秒............... - - 开始自检,请等待%1秒............... + + 开始自检,请等待%1秒... - - + + 自检完成!!! - - - + + + 警告 - + 确认要刷墨水卡吗? - - + + 不需要刷墨水卡! - - + + 请先添加墨水再刷墨水卡! - - - + + 刷墨水卡成功! - + 确认要刷溶剂卡吗? - - + + 不需要刷溶剂卡! - - + + 请先添加溶剂再刷溶剂卡! - - - + + 刷溶剂卡成功! - + 确认要刷保养卡吗? - - - + + 刷保养卡成功! - - + + MAC无效卡! - + card data: %1 - + 无效卡,这张卡已经在%1时使用过 - + ink Warning at: %1 - + solvent Warning at: %1 - - 压力泄漏或压力传感器故障! - - - - - - + + 电机故障 - - 电机故障!!! - - - - - + + 回收槽到头 - - + 回收槽卡住或者回收槽开关时间设置错误 - + 错误!粘度计故障:检测不到上位灯 - + 压力过高,请检查管路是否堵塞,然后点击故障恢复按钮 - + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! - + 墨水液位报警超过48小时,机器无法正常打印,请先添加原厂墨水再刷墨水卡,以恢复喷码机的正常工作! - + 请刷溶剂卡,请使用原厂溶剂耗材,否则机器将在%1小时后禁止使用! - + 溶剂液位报警超过48小时,机器无法正常打印,请先添加溶剂再刷溶剂卡以恢复喷码机的正常工作! - + 保养期还有%1天到期,请及时保养,否则喷码机容易损坏 - + 保养期已超过%1天,请进行保养以恢复喷码机的正常使用 - + 刷卡倒计时起始时间文件不存在 - + 请稍候 - - + + 刷溶剂卡倒计时: %1 秒 @@ -1476,421 +1455,421 @@ - + 1 书 - + 2 输 - + 3 数 - + 4 属 - + 5 熟 - + 上一页 - + 下一页 - + ` - + 1 - + 2 - + 3 - + 4 - + 5 - + 6 - + 7 - + 8 - + 9 - + 0 - + - - + = - + 退格 - - + + 英文 - + q - + w - + e - + r - + t - + y - + u - + i - + o - + p - + [ - + ] - + \ - - + + 大写 - + a - + s - + d - + f - + g - + h - + j - + k - + l - + ; - + ' - + Enter - + Shift - + z - + x - + c - + v - + b - + n - + m - + , - + . - + / - + 上 - + 特殊字 - + 隐藏 - + Ctrl - + 删除 - + 行首 - + 行尾 - + 左 - + 下 - + 右 - - + + 错误 - + hanziDisplayLabels缺少初始化 - + warning - + myInputMethod is null - + 找不到输入法初始化文件 - + 小写 - + Tiếng Việt - + Russian - + Japanese - + 全选 - + 复制 - + 粘贴 - + 剪切 - + 后退 @@ -1941,16 +1920,16 @@ - - + + ← - - + + → @@ -1985,7 +1964,7 @@ - + 字符间距 @@ -2011,7 +1990,7 @@ - + ✕ @@ -2037,7 +2016,7 @@ - + TextLabel @@ -2052,72 +2031,72 @@ - + 粘度 - + 高压包 - + 隔膜位置 - + 压力 - + 墨线开关 - - 喷头盖开 + + 喷嘴逆清洗 - + 墨水缸满 - + 墨水液位 - + 溶剂液位 - + 回收故障 - + 粘度故障 - + 相位故障 - + 高压故障 - + 故障恢复 @@ -2132,64 +2111,69 @@ - - - - - + + + + + 警告 - - - + + + 无法打开文件 - - - - + + + + 提示 - + 是否确认将所有日志文件导出到U盘? - + U盘目录创建失败 - + U盘未插入或无法识别,请重新插拔设备! - + 成功导出到U盘 - + 选择历史记录文件 - + 是否确认将历史日志文件全部清除? - + 是否确认将当前日志全部清除? + + + 清洗中,界面锁死 + + MainInstruction @@ -2198,218 +2182,99 @@ Form + + + 网口通信 + + + + + 时间设置 + + - 文件 + 服务 + 文件 - - 重置所有计数器 - - - - - 建立新文件单 - - - - - 调入文件喷印 - - - - - 建立新文件 - - - - - 打开文件进行编辑 - - - - - 编辑当前文件 - - - - - 保存计数器 - - - - - 额外 - - - - - Delete extern text memory - - - - - 建立快捷功能键 - - - - - 产品计数器设置 - - - - - 直接启动喷印 - - - - - 脱离 - - - - + 图形编辑器 - - 管理器 - - - - - 设置 - - - - - 液压设置 - - - - - 启用口令保护 - - - - - 输入/输出设置 - - - - - 接口设置 - - - - - 口令设置 - - - - + 基本设置 - + 服务 - - 信息 - - - - - 输入/输出信号检验 - - - - - 数据记录 - - - - - 试喷 - - - - + 系统设置 - + 系统管理 - - 触摸校准 - - - - + 其他设置 - + 设置保养间隔 - - 液压/喷头 - - - - + 系统更新 - + 系统授权 - + ✕ - + mtDate1: %1 - + mtInterval1: %1 - + mtEndDate1: %1 - + mtFlog1: %1 - + 提示 - + RFID卡清零! @@ -2417,405 +2282,382 @@ MainWidget - + background-color:#6A7289; - + 编辑当前文件 - + 调入文件喷印 - + 主指令单 - + 管理器 - + 信息 - + background-color:#BCBFC4; - + background-color:#CACCC9; - - - + + background-color:#BBBBBD;border-radius:3px; - - - + + + 0 + + + + + 达到数量后停止: + + + + + 开始打印 + + + + color:#000000;font-size:18px; - - 喷头盖已盖上 - - - - - 墨剂开启 - - - - + 速度 米/分 - + color:#3CB371;font-size:18px; - + 当前 - + color:#E72F28;font-size:18px; - + 最大 - + color:#3CB371;font-size:24px; - + 0007.9 - + color:#E72F28;font-size:24px; - + 0020.3 - - color:#000000;font-size:18px;padding-left:20px; + + 停止打印 - + + 喷嘴开启 + + + + + 喷嘴关闭 + + + + 产品计数器 - - 00000000 - - - - + color:#000000;font-size:28px;font-weight:bold; - - 0000000000 - - - - - - - background-color:#C5C4BF;border-radius:3px; - - - - - - - - - + border:0px; - - - - - - - + + + + + + + 警告 - + 回收槽未关,是否关闭回收槽后关机! - + 是否确认关机? - - - - 正在准备关机,请等待%1秒............... - - - - - 准备关机...... - - - - - 关机失败!!! - - - - + 最多支持的列数目为:%1请减小信息长度. - - - - + + 变量数大于8个,某些变量将不起作用!!! - - + + 请减少信息中的变量(或计数器)数量. - + warning,界面上有变量未显示完全 - - - - + + + + 错误 - + 喷头盖未关,请先关喷头盖! - + 墨线未开,请先开墨线开关! - + 当前总列数 %1 ,支持的总列数为 %2,请减少打印串的长度 - + 打印耗时 %1ms ,触发间隔 :%2ms ,触发间隔至少应当大于打印耗时3ms - - 开始打印1 + + + 高压故障 - + + + 相位故障 + + + + + + 粘度故障 + + + + + + 回收故障 + + + + + + 溶液液位 + + + + + + 墨水液位 + + + + + + 墨水缸满 + + + + + + 墨线开关 + + + + + 正常 + + + + 提示 - + 随机码文本将展出到U盘,请插入U盘 - - 正在排气 ............... - - - - + 正在打开回收槽... - + 停止打开 - - + + 回收槽之前发生阻塞或回收槽时间设置错误,是否强制将当前位置设为到顶位置? - + 正在关闭回收槽... - + 停止关闭 - - + + %1.%2 - - 回收槽未到底!!!!!! - - - - - - - 正在喷印............... - - - - - - 暂停喷印............... - - - - - 喷头盖开, 喷印无法正常进行!!! - - - - + 墨水缸满报警 - + 墨水液位报警 - + 溶剂液位报警 - - + 高压故障,暂停打印 - + 高压故障,暂停打印. - + 高压故障,关回收槽 - - 高压故障,关回收槽和墨线 - - - - - + 回收故障,关闭回收槽,关墨线 - - 回收故障. - - - - + 回收异常,墨线可能偏离.(%1) - + 相位故障:飞行时间错误! - + 相位故障:相位检测错误! - - - + + 相位故障,准备关机 - - - + + 相位故障,暂停打印 - + 相位故障,屏蔽DAC输出 - - + 相位故障,屏蔽充电 @@ -3151,268 +2993,258 @@ p, li { white-space: pre-wrap; } - - 使用齿轮泵 - - - - - 使用回收泵 - - - - + 信息上下颠倒 - + 信息左右颠倒 - + PrintGo信号页1 - + 脉冲信号值: - + 无镜像打印 - + 自动水平翻转 - + 自动垂直翻转 - + 中心对称旋转 - + 镜象交替类型 - - - - + + + + 延时(毫秒): - + 镜像交替间隔 - - - + + + 触发延时(毫秒) - + 脉冲输出使能 - + 禁止电眼清零 - + 允许电眼复位 - + 允许电眼立即复位 - + 电眼清零 - + 字符宽度: - + 产生脉冲所需计数: - + 间隔模式: - + 行末<->行首 - + 行首<->行首 - + PrintGo信号页2 - - - - + + + + 重复间隔(毫秒) - + 重复次数 - - + + 封锁时间(毫秒) - + 同步器清零 - + 同步打印 - + 电眼信号来源 - - + + 内部 - - + + 外部 - + 光电边沿触发 - + 光电电平触发 - + GroupBox - + 延时触发 - + 编码器参数 - + 脉冲数/毫米 - + 脉冲数修正 - + 喷印间隔(毫米) - + 同步喷印模式 - + 按字符宽度 - + 按喷印比例 - + 同步器正反转打印 - + 同步器只正转打印 - + 同步器只反转打印 - + 同步器触发 - + 同步器来源 - + ✕ - + ✓ @@ -3427,54 +3259,54 @@ p, li { white-space: pre-wrap; } - + 提示:参数不正确 - + 要求:触发长度小于喷印间隔 - - - - + + + + 延时(毫米): - - - + + + 触发延时(毫米) - - + + 重复间隔(毫米) - - + + 封锁间隔(毫米) - + 封锁间隔(毫秒) - + 字符宽度 - + 喷印比例(%) @@ -3763,123 +3595,123 @@ p, li { white-space: pre-wrap; } - + ✓ - + ✕ - + 整体设置 - - - + + + 班时编号 - - + + 班时时间 - - + + 新建行 - + 标号 - + 1 - + 00:00 - + A - + 2 - + 08:09 - + B - + 3 - + 12:00 - + C - + 可选用的班次时间: - + 23 - - + + ← - - + + → - + 添加 - + 移除 - + hh:mm @@ -3915,15 +3747,30 @@ p, li { white-space: pre-wrap; } - + 采用预设值 - + 确认 + + + 预设值: + + + + + 当前值: + + + + + 采用当前值 + + SystemManage @@ -3933,540 +3780,475 @@ p, li { white-space: pre-wrap; } - + 手动控制泵阀 - + 齿轮泵关 - + 齿轮泵开 - + 回收槽开 - - - - - - - - - - + + + + + + + + + + 停止 - + 回收槽关 - + 粘度泵 - + 混合阀 - + 回收泵 - + 主墨泵 - - + + 压缩机 - + 泄压阀 - + 墨水阀 - + 循环阀 - - 切换键盘 - - - - - 更新字库 - - - - - 导出字库 - - - - + 环境配置 - - 烧录单片机软件 - - - - - 时间设置 - - - - - 导出配置到U盘 - - - - - 从U盘导入配置 - - - - + 重启 - + 排气 - - 烧录FPGA - - - - - 更新软件 - - - - + ✕ - - - - - + + + + + 自动 - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + 开 - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + 关 - - - - - - - - - - - + + + + + + + + + + 警告 - + 是否确认进入手动模式? - + 请先确认已经关闭回收槽,确认进入自动模式? - - - - + + + + 手动 - - - + + + 请先移开喷头盖! - - - - - - - - + + + + + + + + 启动 - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + 提示 - - - - + + + + 密码不正确! - + Application - + 是否确认更新字库? - + 没找到对应字库,更新失败! - + 更新字库成功,重启后生效! - + 恢复出厂设置成功,请重新关机上电 - + 校准触摸屏 - + 是否确认开始校准程序?请小心进行校准! - + 是否确认更新软件? - - - - - - - - - - + + + + + + + + + 错误 - + 更新失败! - + 软件更新成功,重启后生效! - + 找不到更新软件! - + 是否确认更新系统? - + 系统更新成功,重启后生效! - + 文件不存在! - + 如果开始清洗,务必确认回收槽已经打开10毫米以上,并且在一分钟后将停止清洗 - + 开始清洗 - + 停止清洗 - + 压力 - + autoclean cancel or status: - + (2/3) Cleaning - + (3/3) Cleaning - + 是否确认导出配置到U盘? - + 检测不到U盘 - + 成功导出配置到U盘 - + 是否确认从U盘导入配置? - + 配置文件/udisk/sysPara.bin不存在! - + 从U盘成功导入配置,重启后生效! - + autoclean start - - 是否确认导出字库到U盘? - - - - - U盘不可识别! - - - - - 字库导出完成! - - - - + 是否开始电机测试? - + Cancel - + 正在排气,是否停止? - + 确定要升级FPGA软件吗? - + 找不到 lib.tar! - + 无法删除旧的 lib.tar! - + 复制 tar 包失败! - + 解压失败,请检查权限! - + 移动库文件失败! - + 环境配置成功! - + 切换失败! - + 切换成功,重启后生效! - + 找不到软件! - + 找到多个软件,请删除多余的文件,只保留一个! - + 确定要升级单片机软件吗? - + 升级成功,请重启QtUI! - + 升级失败! @@ -4720,117 +4502,97 @@ p, li { white-space: pre-wrap; } - + 重置高压 - - 界面语言设置 - - - - + 喷嘴逆清洗 - + ✓ - + ✕ - - + + 错误 - + 实际频率不能为%1 - - + + 提示 - + 应用成功 - + 自动清洗时间约为一分钟,然后自动停止 - + 开始清洗 - + 停止清洗 - + 正在喷嘴逆清洗...... - + 清洗完成 - + Application - + 是否更新高压包电流数据? - + 喷头盖未关,请先关喷头盖! - + Oscillator voltage %1 --- 最长高电平时钟 %2 - + 最佳晶振电压完成 - - - Tiếng Việt(Vietnamese interface) - - - - - Chinese interface(中文界面) - - - - - English interface(英文界面) - - SystemUpdate @@ -4845,25 +4607,65 @@ p, li { white-space: pre-wrap; } - + 烧录FPGA - + 更新软件 - + + 界面语言设置 + + + + 烧录单片机软件 - + 更新字库 + + + 导出字库 + + + + + 警告 + + + + + 是否确认导出字库到U盘? + + + + + 错误 + + + + + U盘不可识别! + + + + + 提示 + + + + + 字库导出完成! + + TestPrintWidget @@ -4873,40 +4675,14 @@ p, li { white-space: pre-wrap; } - - QWidget { font-family: Arial; font-size: 12px; } - - - - - - - - - - - QPushButton { - border: 1px solid #cccccc; border-radius:8px; - padding: 10px; - font-size: 14px; - text-align: center; - } - QPushButton:checked { - border: 2px solid #0078d7; - background-color: #f0f8ff; - } - - - - - + + background-color:#828E9E; - - - + + QPushButton { background: qlineargradient(x1: 0.5, y1: 0, x2: 0.5, y2: 1, stop: 0 #6F9CD6, stop: 1 #FFFFFF); border: 1px solid #a0a0a0; @@ -4924,14 +4700,13 @@ p, li { white-space: pre-wrap; } - + background-color:#C4C5C9; - - - + + QPushButton { background-color: #ffffff; border: 1px solid #a8a8a8; @@ -4947,64 +4722,112 @@ p, li { white-space: pre-wrap; } - - QComboBox { - background-color: #e5e5e5; - border: 1px solid #a8a8a8; - border-radius: 2px; - padding: 4px 20px 4px 8px; - icon-size:60px 60px; - } - QComboBox::drop-down { width: 30px; } + + 文字 - - 5点(英) + + 条形码 - - 7点(英) + + 图标 - - 9点(英) + + 日期时间 - - 12点(英) + + 计数器 - - 16点(英) + + 轮班 - - 24点(英) + + 保存 - - 32点(英) + + 打印设置 - + + 图元设置 + + + + + 复制 + + + + + 粘贴 + + + + + 删除 + + + + + 5 dot + + + + + 7 dot + + + + + 9 dot + + + + + 12 dot + + + + + 16 dot + + + + + 24 dot + + + + + 32 dot + + + + UK - + US - + QLineEdit { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -5016,13 +4839,13 @@ p, li { white-space: pre-wrap; } - + JET2neo-TEST - - + + QPushButton { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -5041,19 +4864,19 @@ p, li { white-space: pre-wrap; } - + << - + >> - - - + + + QLabel { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -5066,20 +4889,20 @@ p, li { white-space: pre-wrap; } - + Y:9 - + X:105 - - - - + + + + QPushButton { background-color: #87CEEB; border: 1px solid #4682B4; @@ -5099,42 +4922,42 @@ p, li { white-space: pre-wrap; } - + ↑ - + ← - + → - + ↓ - + ID:1 - + ✓ - + 提示 - + 是否保存文件? @@ -5190,121 +5013,111 @@ p, li { white-space: pre-wrap; } - + 高度 - + 宽度 - + 图像裁剪 - + 缩小 - + 放大 - + 图像扩张 - + 保存为 - + 新建 - + 打开 - - - + + + 保存 - - 导入 - - - - - A - - - - + 编辑图案 - + ✕ - + 提示 - + 图片已经改变,是否保存? - + 放弃保存 - - - + + + 放大倍数:%1 - + 图片另存为... - + 另存为 - + 打开文件 - + 图片保存为... - + 导入文件 @@ -5481,18 +5294,18 @@ p, li { white-space: pre-wrap; } zkWidget - - + + 警告 - + 最大支持宽度:%1 高度:%2 当前请求:%3 x %4 - + 请新创建建图片 diff --git a/fileManage/FileManageWidget.cpp b/fileManage/FileManageWidget.cpp index cd86632..ccc549b 100644 --- a/fileManage/FileManageWidget.cpp +++ b/fileManage/FileManageWidget.cpp @@ -14,6 +14,8 @@ FileManageWidget::FileManageWidget(QWidget *parent) : { ui->setupUi(this); + applyStyleSheet(); + // 安装事件过滤器用于判断当前焦点位于系统文件列表还是U盘文件列表,高亮获得焦点的列表 ui->systemFileListView->installEventFilter(this); ui->udiskFileListView->installEventFilter(this); @@ -202,3 +204,46 @@ void FileManageWidget::copyFiles(QListWidget *from, QListWidget *to) qInfo() << "Command: " << cmd << ", result: " << ret; } } + +void FileManageWidget::applyStyleSheet() +{ + QString styleSheet = R"( + + QPushButton#closeBtn { + background-color: #E6F7FF; + border: 1px solid #87CEEB; + border-radius: 4px; + font-size: 24px; + color: #228B22; + } + QPushButton#closeBtn:hover{ + background-color: #D1E9FF; + } + + QPushButton#closeBtn:pressed{ + background-color: #BAE7FF; + } + + QPushButton { + background-color: #5396C1; + color: #ffffff; + border: 1px solid #000000; + border-radius: 3px; + font-size: 18px; + width: 100px; + height: 50px; + } + + QPushButton:hover { + background-color: #5396C1; + } + + QPushButton:disabled { + background-color: #7C828E; + color: #606060; + border-color: #808080; + } + )"; + + this->setStyleSheet(styleSheet); +} diff --git a/fileManage/FileManageWidget.h b/fileManage/FileManageWidget.h index a78b6c8..c6c352f 100644 --- a/fileManage/FileManageWidget.h +++ b/fileManage/FileManageWidget.h @@ -48,6 +48,8 @@ private: // 用于文件显示列表中,存放每个文件名对应的绝对路径所用的数据键 static constexpr int AbsPathRole = Qt::UserRole + 1; + + void applyStyleSheet(); // 应用样式表 }; #endif // FILEMANAGEWIDGET_H diff --git a/fileManage/FileManageWidget.ui b/fileManage/FileManageWidget.ui index eba3ce8..c2ea925 100644 --- a/fileManage/FileManageWidget.ui +++ b/fileManage/FileManageWidget.ui @@ -6,9 +6,15 @@ 0 0 + 786 + 498 + + + + 800 600 - + Form diff --git a/korean.ts b/korean.ts index 0120f3a..e116eba 100644 --- a/korean.ts +++ b/korean.ts @@ -9,166 +9,188 @@ 양식 - + 整体设置 전역 설정 - + 变量类型 변수 유형 - - + + 计数器1 카운터1 - - + + 计数器2 카운터2 - + 数字个数: 小数点位数: 소수점 자릿수: - + 1 1 - + 2 2 - + 3 3 - + 4 4 - + 5 5 - + 6 6 - + 7 7 - + 8 8 - - + + 字符间距 + 문자 간격 + + + + + ← + + + + + + → + + + + + 增量值: 증분 값: - - + + 额外设置 + + + + + 如果预览与打印显示不正确,调整此设置可能恢复。 + + + + + 自定义字符宽度 + + + + + 当前值: 현재 값: - + 可变长度 가변 길이 - - + + 重复数: 重复次数: 반복 횟수: - + 小数点位数 소수점 자리수 - - 重设值 重置值 - 현재 카운터 재설정 + 현재 카운터 재설정 - - + + 结束值: 종료 값: - - + + 起始值: 开始值: 시작 값: - - 清零 - 카운터 초기화 + 카운터 초기화 - 代替 替代 - 대체 + 대체 - 数据 - 데이터 + 데이터 - 下 - Down + Down - 预设值 - 기본값 + 기본값 - 上 - UP + UP - 类型 - 유형 + 유형 - + ✓ ✓ - + ✕ ✕ @@ -224,17 +246,17 @@ 양식 - + ✓ ✓ - + ✕ ✕ - + 整体设置 전체 설정 @@ -243,18 +265,18 @@ 변수 유형 - + 年 년 - - + + 月 월 - + 日 일 @@ -351,121 +373,121 @@ 15 - + 日期/时间 날짜/시간 - + 内容 내용 - + 有效期限 유효 기간 - - + + 天数 일수 - + 月 - 精确到日 월 - 일 단위 - + 月 - 精确到月 월 - 월 단위 - + . . - + : - + , - + / - + ; - + _ - - + + - - - - + + 小时 시간 - + 分钟 분 - + 秒钟 초 - + 年2026 2026년 - + 年中第几周 년중 몇 주 - + 年26 년26 - - + + 周几 주 몇 일 - + 空格 공백 - + <------ - + + + @@ -538,48 +560,48 @@ 대체 사용 - - + + 代替 대체 - + 名称 이름 - + 数据 데이터 - + Meridiem Meridiem - + 类型 유형 - + 上 UP - + 下 Down - + 预设值 기본값 - + 高级选项 고급 옵션 @@ -1397,12 +1419,12 @@ 저장 - + 警告 경고 - + U盘未插入或U盘根目录下的doc文件夹不存在! USB가 연결되지 않았거나 루트 폴더에 'doc' 폴더 없음! @@ -1625,74 +1647,83 @@ DigitalInput - + Form - + 9 - + 3 - + 8 - + - - + 退格 Backspace - + 1 - + 4 - + 0 0 - + + 清零 + 카운터 초기화 + + + + Enter + + + + 5 - + 7 - + 2 - + 6 - 全选 - SelectAll + SelectAll @@ -2286,22 +2317,22 @@ ...에서 찾기 - + 系统 시스템 - + U盘 USB - + ✓ ✓ - + ✕ ✕ @@ -2438,18 +2469,17 @@ FPGA 통신 복구 - + 开始自检,请等待60秒............... 자가 진단 시작 (60초 대기) - 开始自检,请等待%1秒............... - 자가 진단 시작 (%1초 대기) + 자가 진단 시작 (%1초 대기) - - + + 自检完成!!! 자가 진단 완료!!! @@ -2546,17 +2576,17 @@ 오류! 점도 과대 - + mtDate: %1 mtDate: %1 - + mtInterval: %1 mtInterval: %1 - + mtEndDate: %1 mtEndDate: %1 @@ -2565,7 +2595,7 @@ mtFlog: %1 - + timeoutDay: %1 timeoutDay: %1 @@ -2578,82 +2608,83 @@ 리더기 에러! - - + + 13.读卡器故障! 카드 리더기 고장! - 压力泄漏或压力传感器故障! - 압력 누출/센서 에러! + 압력 누출/센서 에러! 运行中压力泄漏,停齿轮泵! 작동 중 압력 누출, 기어 펌프 정지! - - + 测试时间结束,准备关机 테스트 시간 종료, 종료 준비 - - + + 不需要刷溶剂卡! 용제 카드 스와이핑 필요 없음! - - - + + 刷溶剂卡成功! 确认要刷卡吗? The solvent card was swiped successfully - - + + 不需要刷墨水卡! There is no need to swipe an ink card - + mtFlag: %1 mtFlag: %1 - + + 开始自检,请等待%1秒... + + + + 确认要刷墨水卡吗? 잉크 카드 스와이핑 확인 - - + + 请先添加墨水再刷墨水卡! 잉크를 먼저 추가하고 잉크 카드를 스와이핑하세요! - - - + + 刷墨水卡成功! 잉크 카드 스와이핑 성공! - + 确认要刷溶剂卡吗? 용제 카드 스와이핑 확인 - + 请稍候 잠시 후 다시 시도하세요 - - + + 刷溶剂卡倒计时: %1 秒 용제 카드 스와이핑 카운트다운: %1 초 @@ -2663,8 +2694,8 @@ 용제 카드 스와이핑 필요 없음! - - + + 请先添加溶剂再刷溶剂卡! 용제를 먼저 추가하고 용제 카드를 스와이핑하세요! @@ -2673,35 +2704,34 @@ 유지보수 카드 불필요! - - - + + 刷保养卡成功! 유지보수 카드 성공! - - + + MAC无效卡! MAC 무효 카드! - + 错误!粘度计故障:检测不到上位灯 오류! 점도계 고장: 상단 램프 감지 실패 - + 保养期还有%1天到期,请及时保养,否则喷码机容易损坏 보증 기간이 %1 일 남았습니다. 정기 점검을 실시하세요; 그렇지 않으면 프린터가 손상될 수 있습니다 - + 保养期已超过%1天,请进行保养以恢复喷码机的正常使用 보증 기간이 %1 일 초과했습니다. 프린터의 정상 사용을 복구하기 위해 정기 점검을 실시하세요 - + 压力过高,请检查管路是否堵塞,然后点击故障恢复按钮 압력이 너무 높습니다. 파이프라인이 봉쇄되었는지 확인하고 고장 복구 버튼을 클릭하세요 @@ -2807,22 +2837,22 @@ 톱니바퀴 펌프 속도가 너무 높습니다. 즉시 중지하고 공급업체에 문의하세요 - + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! 원본 잉크 소모품을 사용하고 잉크 카드를 스와이핑하세요; 그렇지 않으면 기계가 %1시간 후에 사용 금지됩니다! - + 墨水液位报警超过48小时,机器无法正常打印,请先添加原厂墨水再刷墨水卡,以恢复喷码机的正常工作! 잉크 수위 경보가 48시간을 초과했습니다. 프린터의 정상 작동을 복구하기 위해 원본 잉크를 먼저 추가하고 잉크 카드를 스와이핑하세요 - + 请刷溶剂卡,请使用原厂溶剂耗材,否则机器将在%1小时后禁止使用! 원본 용제 소모품을 사용하고 용제 카드를 스와이핑하세요; 그렇지 않으면 기계가 %1시간 후에 사용 금지됩니다! - + 溶剂液位报警超过48小时,机器无法正常打印,请先添加溶剂再刷溶剂卡以恢复喷码机的正常工作! 용제 수위 경보가 48시간을 초과했습니다. 프린터의 정상 작동을 복구하기 위해 용제를 먼저 추가하고 용제 카드를 스와이핑하세요 @@ -2831,7 +2861,7 @@ 보증 기간이 %1 일 초과했습니다. 정기 점검을 실시하세요; 그렇지 않으면 프린터가 손상될 수 있습니다 - + 刷卡倒计时起始时间文件不存在 카드 스와이핑 카운트다운 시작 시간 파일이 존재하지 않습니다 @@ -3016,24 +3046,24 @@ 잉크 선 빠른 닫기 완료 - - - + + + 警告 경고 - + 确认要刷保养卡吗? Are you sure you want to swipe the maintenance card? - + card data: %1 카드 데이터: %1 - + 无效卡,这张卡已经在%1时使用过 무효 카드 (%1시 사용됨) @@ -3082,17 +3112,17 @@ 인쇄 과속, 완료 불가 - + %1/%2/%3 %1/%2/%3 - + ink Warning at: %1 잉크 경보: %1 - + solvent Warning at: %1 용제 경보: %1 @@ -3125,26 +3155,23 @@ 오류!!!!!!!!!!!점도 이상 - - - + + 电机故障 모터 에러 - 电机故障!!! - 모터 에러!!! + 모터 에러!!! - - + + 回收槽到头 회수 탱크 최대 위치 도달 - - + 回收槽卡住或者回收槽开关时间设置错误 회수 탱크 고착 또는 스위치 시간 설정 오류 @@ -3176,401 +3203,401 @@ - + 1 书 - + 2 输 - + 3 数 - + 4 属 - + 5 熟 - + 上一页 PageUP - + 下一页 PageDown - + 退格 BackSpace - + Shift Shift - + q - + w - + e - + r - + t - + y - + u - + i - + o - + p - + \ - - + + 英文 English - - + + 大写 Caps LOCK - + a - + s - + d - + f - + g - + h - + j - + k - + l - + ; - + ' - + Enter - + 删除 Delete - + z - + x - + c - + v - + b - + n - + m - + 上 UP - + 行首 Home - + 行尾 End - + 左 Left - + 下 Down - + 右 Right - + ` ~ ~ - + 1 ! - + 2 @ - + 3 # - + 4 $ - + 5 % - + 6 ^ - + 7 & - + 8 * - + 9 ( - + 0 ) - + - _ - + = + - + 隐藏 Hide - + [ { - + ] } - + , < - + . > - + / ? - + 特殊字 Special Char - + Ctrl Ctrl - + warning 경고 - + myInputMethod is null 입력 방법 없음 - - + + 错误 오류 - + hanziDisplayLabels缺少初始化 한자 표시 레이블 초기화 누락 - + 找不到输入法初始化文件 입력법 초기화 파일 없음 - + 小写 소문자잠금 @@ -3579,42 +3606,42 @@ Char 중국어 - + Tiếng Việt - + Russian 러시아어 - + Japanese 일본어 - + 全选 전체 선택 - + 复制 복사 - + 粘贴 붙여넣기 - + 剪切 잘라내기 - + 后退 뒤로 @@ -3697,16 +3724,16 @@ Char - - + + ← - - + + → @@ -3741,7 +3768,7 @@ Char 카운터 ID - + 字符间距 문자 간격 @@ -3767,7 +3794,7 @@ Char - + ✕ ✕ @@ -3787,72 +3814,76 @@ Char 기계 상태 - + 粘度 점도 - + 高压包 고전압 패키지 - + 隔膜位置 다이어프램 위치 - + 压力 압력 - + 墨线开关 잉크선 스위치 - - 喷头盖开 - 커버열림 + + 喷嘴逆清洗 + - + 喷头盖开 + 커버열림 + + + 墨水缸满 잉크 통 가득 참 - + 墨水液位 잉크 레벨 오류 - + 溶剂液位 솔벤트 레벨 - + 回收故障 석션 에러 - + 粘度故障 점도 에러 - + 相位故障 위상 에러 - + 高压故障 고전압에러 - + 故障恢复 고장 복구 @@ -3863,7 +3894,7 @@ Char - + TextLabel 텍스트 라벨 @@ -3889,65 +3920,70 @@ Char 기어 펌프 속도 - - - - - + + + + + 警告 경고 - - - + + + 无法打开文件 파일 열기 실패 - - - - + + + + 提示 팁 - + 是否确认将所有日志文件导出到U盘? 모든 로그 파일을 USB로 내보내시겠습니까? - + U盘目录创建失败 USB 디렉토리 생성 실패 - + U盘未插入或无法识别,请重新插拔设备! USB 미연결 또는 인식 불가, 재연결하세요! - + 成功导出到U盘 USB로 내보내기 성공 + + + 清洗中,界面锁死 + + 成功导出到U盘? USB로 성공적으로 내보냄? - + 选择历史记录文件 기록 파일 선택 - + 是否确认将历史日志文件全部清除? 모든 기록 로그 파일 삭제하시겠습니까? - + 是否确认将当前日志全部清除? 현재 로그 모두 삭제하시겠습니까? @@ -3961,216 +3997,201 @@ Char - 文件 - 파일 + 服务 + 文件 + 파일 - 重置所有计数器 - 모든 카운터 초기화 + 모든 카운터 초기화 - 建立新文件单 - 새 파일 생성 + 새 파일 생성 - 调入文件喷印 - 파일 인쇄 + 파일 인쇄 - 建立新文件 - 새 파일 생성 + 새 파일 생성 - 打开文件进行编辑 - 파일 열기 + 파일 열기 - 编辑当前文件 - 현재 파일 편집 + 현재 파일 편집 - 保存计数器 - 카운터 저장 + 카운터 저장 - 额外 - 추가 + 추가 - 直接启动喷印 - 직접 인쇸 + 직접 인쇸 - 脱离 - 분리 + 분리 - 产品计数器设置 - 제품 카운터 설정 + 제품 카운터 설정 - 管理器 - 관리자 + 관리자 - 建立快捷功能键 - 단축키 생성 + 단축키 생성 - Delete extern text memory - 외부 텍스트 메모리 삭제 + 외부 텍스트 메모리 삭제 - + 图形编辑器 그래픽 편집기 - 设置 - 설정 + 설정 - 液压设置 - 압력 설정 + 압력 설정 - 启用口令保护 - 비밀번호 보호 활성화 + 비밀번호 보호 활성화 - 输入/输出设置 - 입력/출력 설정 + 입력/출력 설정 - 接口设置 - 인터페이스 설정 + 인터페이스 설정 - 口令设置 - 비밀번호 설정 + 비밀번호 설정 - + 基本设置 기본 설정 - + + 网口通信 + + + + + 时间设置 + 시간 설정 + + + 服务 서비스 - + 设置保养间隔 유지보수 간격 설정 - 液压/喷头 - 압력/헤드 + 압력/헤드 - 信息 - 정보: + 정보: - 试喷 - 테스트 인쇸 + 테스트 인쇸 - 数据记录 - 데이터 기록 + 데이터 기록 - 触摸校准 - 터치 보정 + 터치 보정 - 输入/输出信号检验 - 입력/출력 신호 검사 + 입력/출력 신호 검사 - + 系统设置 시스템 설정 - + 系统管理 시스템 관리 - + 其他设置 기타 설정 - + 系统更新 시스템 업데이트 - + 系统授权 시스템 권한 - + ✕ ✕ - + mtDate1: %1 mtDate1: %1 - + mtInterval1: %1 mtInterval1: %1 - + mtEndDate1: %1 mtEndDate1: %1 - + mtFlog1: %1 mtFlog1: %1 - + 提示 팁 - + RFID卡清零! RFID 카드 초기화! @@ -4178,405 +4199,450 @@ Char MainWidget - + background-color:#6A7289; background-color:#6A7289; - + 编辑当前文件 현재 파일 편집 - + 调入文件喷印 파일 인쇸 - + 主指令单 주 명령서 - + 管理器 관리자 - + 信息 정보 - + background-color:#BCBFC4; background-color:#BCBFC4; - + background-color:#CACCC9; background-color:#CACCC9; - - - + + background-color:#BBBBBD;border-radius:3px; background-color:#BBBBBD;border-radius:3px; - - - + + + 0 + 0 + + + + 达到数量后停止: + + + + + 开始打印 + 인쇄 시작 + + + color:#000000;font-size:18px; color:#000000;font-size:18px; - 喷头盖已盖上 - 헤드 커버 닫힘 + 헤드 커버 닫힘 - 墨剂开启 - 잉크 켜짐 + 잉크 켜짐 - + 速度 米/分 속도 미터/분 - + color:#3CB371;font-size:18px; color:#3CB371;font-size:18px; - + 当前 현재 - + color:#E72F28;font-size:18px; color:#E72F28;font-size:18px; - + 最大 최대 - + color:#3CB371;font-size:24px; color:#3CB371;font-size:24px; - + 0007.9 0007.9 - + color:#E72F28;font-size:24px; color:#E72F28;font-size:24px; - + 0020.3 0020.3 - - color:#000000;font-size:18px;padding-left:20px; - color:#000000;font-size:18px;padding-left:20px; + + 停止打印 + 인쇄 중지 - + + 喷嘴开启 + + + + + 喷嘴关闭 + + + + color:#000000;font-size:18px;padding-left:20px; + color:#000000;font-size:18px;padding-left:20px; + + + 产品计数器 제품 카운터 - 00000000 - 00000000 + 00000000 - + color:#000000;font-size:28px;font-weight:bold; color:#000000;font-size:28px;font-weight:bold; - 0000000000 - 0000000000 + 0000000000 - - - background-color:#C5C4BF;border-radius:3px; - background-color:#C5C4BF;border-radius:3px; + background-color:#C5C4BF;border-radius:3px; - - - - - - + border:0px; border:0px; - - - - - - - + + + + + + + 警告 경고 - + 回收槽未关,是否关闭回收槽后关机! 회수 탱크 미복귀, 종료 전 닫기? - + 是否确认关机? 전원 종료 확인? - - - 正在准备关机,请等待%1秒............... - 시스템 종료 준비 중, %1초 후 종료됩니다. + 시스템 종료 준비 중, %1초 후 종료됩니다. - 准备关机...... - 전원 종료 준비 중...... + 전원 종료 준비 중...... - 关机失败!!! - 전원 종료 실패!!! + 전원 종료 실패!!! - + 最多支持的列数目为:%1请减小信息长度. 최대 지원 열 수: %1, 정보 길이를 줄이세요. - - - - + + 变量数大于8个,某些变量将不起作用!!! 변수 수가 8개를 초과하여 일부 변수가 작동하지 않습니다! - - + + 请减少信息中的变量(或计数器)数量. 인쇄 파일 내 변수(또는 카운터) 수를 줄이세요. - + warning,界面上有变量未显示完全 경고: 인터페이스에 일부 변수가 표시되지 않습니다. - - - - + + + + 错误 오류 - + 喷头盖未关,请先关喷头盖! 헤드 커버 닫기 필요! - + 墨线未开,请先开墨线开关! 잉크젯 스위치 켜기! - + 当前总列数 %1 ,支持的总列数为 %2,请减少打印串的长度 최대 %2열 지원, 현재 %1열 → 길이 축소 - + 打印耗时 %1ms ,触发间隔 :%2ms ,触发间隔至少应当大于打印耗时3ms 트리거 간격 %1ms → %2ms 이상 필요 - - 开始打印1 - 인쇄 시작 1 + + + 高压故障 + 고전압에러 - + + + 相位故障 + 위상 에러 + + + + + 粘度故障 + 점도 에러 + + + + + 回收故障 + 석션 에러 + + + + + 溶液液位 + + + + + + 墨水液位 + 잉크 레벨 오류 + + + + + 墨水缸满 + 잉크 통 가득 참 + + + + + 墨线开关 + 잉크선 스위치 + + + + 正常 + + + + 开始打印1 + 인쇄 시작 1 + + + 提示 팁 - + 随机码文本将展出到U盘,请插入U盘 랜덤 코드를 USB에 저장합니다. USB를 삽입하세요. - 正在排气 ............... - 배기 중... + 배기 중... - + 正在打开回收槽... 회수 탱크 여는 중... - + 停止打开 열기 중지 - - + + 回收槽之前发生阻塞或回收槽时间设置错误,是否强制将当前位置设为到顶位置? 회수 탱크 문제 발생 시 강제 종료 위치 설정? - + 正在关闭回收槽... 회수 탱크 닫는 중... - + 停止关闭 닫기 중지 - - + + %1.%2 %1.%2 - 回收槽未到底!!!!!! - 회수 탱크 미복귀!!!!!! + 회수 탱크 미복귀!!!!!! - - - 正在喷印............... - 인쇄 중... + 인쇄 중... - - 暂停喷印............... - 인쇄 일시정지............... + 인쇄 일시정지............... - 喷头盖开, 喷印无法正常进行!!! - 프린트 헤드 커버가 열려 인쇄 불가! + 프린트 헤드 커버가 열려 인쇄 불가! - + 墨水缸满报警 잉크통 만료 경보 - + 墨水液位报警 잉크 레벨 경보 - + 溶剂液位报警 솔벤트 레벨 경보 - - + 高压故障,暂停打印 고전압 오류로 인쇄 일시 중지 - + 高压故障,暂停打印. 고전압 고장, 인쇄 일시정지 - + 高压故障,关回收槽 고전압 오류로 수집기 자동 종료 - 高压故障,关回收槽和墨线 - 고전압 오류로 수집기 및 잉크 라인 자동 종료 + 고전압 오류로 수집기 및 잉크 라인 자동 종료 - - + 回收故障,关闭回收槽,关墨线 재활용 고장 발생, 수집기 및 잉크 라인 종료 - 回收故障. - 재활용 에러 + 재활용 에러 - + 回收异常,墨线可能偏离.(%1) 재활용 이상, 잉크 라인 편향 가능성 (%1) - + 相位故障:飞行时间错误! 위상 이상: 비행 시간 오류! - + 相位故障:相位检测错误! 위상 이상: 검출 오류! - - - + + 相位故障,准备关机 위상 오류로 시스템 종료 준비 - - - + + 相位故障,暂停打印 위상 오류로 인쇄 일시 중지 - + 相位故障,屏蔽DAC输出 위상 오류로 DAC 출력 차단 - - + 相位故障,屏蔽充电 위상 오류로 충전 차단 @@ -6531,9 +6597,8 @@ configuration. 고속 모드 - 使用回收泵 - 재순환 펌프 사용 + 재순환 펌프 사용 齿轮泵转速预警值 @@ -6741,7 +6806,7 @@ configuration. 행 끝 전압(%): - + 信息左右颠倒 좌우 반전 @@ -6750,7 +6815,7 @@ configuration. 위상 고장 시 종료 - + 信息上下颠倒 상하 반전 @@ -6939,9 +7004,8 @@ configuration. 글자 너비 아님 - 使用齿轮泵 - 기어 펌프 사용 + 기어 펌프 사용 高压阈值: @@ -7023,97 +7087,97 @@ configuration. 4행 7점 행렬 - + PrintGo信号页1 PrintGo 신호 페이지 1 - + 脉冲信号值: 펄스 신호 값: - + 无镜像打印 미러 없음 - + 自动水平翻转 자동 수평 반전 - + 自动垂直翻转 자동 수직 반전 - + 中心对称旋转 중심 대칭 회전 - + 镜象交替类型 미러 모드 - - - - + + + + 延时(毫秒): 지연(ms): - + 镜像交替间隔 미러 교대 간격 - - - + + + 触发延时(毫秒) 트리거 지연(ms) - + 脉冲输出使能 펄스 출력 활성화 - + 禁止电眼清零 전자 눈 초기화 금지 - + 允许电眼复位 전자 눈 리셋 허용 - + 允许电眼立即复位 전자 눈 즉시 리셋 허용 - + 电眼清零 전자 눈 카운터 초기화 - + 字符宽度: 문자 너비: - + 产生脉冲所需计数: 펄스 생성 필요 카운트: - + PrintGo信号页2 PrintGo 신호 페이지 2 @@ -7122,153 +7186,153 @@ configuration. 트리거 모드 - + 同步器触发 동기화기 트리거 - + 延时触发 지연 트리거 - + 光电电平触发 광전지 레벨 트리거 - + 光电边沿触发 광전지 에지 트리거 - + 电眼信号来源 전자 눈 신호 소스 - - + + 内部 내부 - - + + 外部 외부 - + GroupBox GroupBox - + 编码器参数 인코더 파라미터 - + 脉冲数/毫米 펄스/밀리미터 - + 脉冲数修正 펄스 수 보정 - + 喷印间隔(毫米) 인쇄 간격(mm) - + 同步喷印模式 동기 인쇄 모드 - + 按字符宽度 글자 너비 기준 - + 按喷印比例 인쇄 비율 기준 - + 同步器正反转打印 동기화기 정/역방향 인쇄 - + 同步器只正转打印 동기화기 정방향 인쇄만 허용 - + 同步器只反转打印 동기화기 역방향 인쇄만 허용 - + 重复次数 반복 횟수 - - - - + + + + 重复间隔(毫秒) 반복 간격(ms) - + 同步打印 동기화 인쇄 활성화 - - + + 封锁时间(毫秒) 잠금 시간(ms) - + 同步器清零 동기화기 카운터 초기화 - + 间隔模式: 간격 모드: - + 行末<->行首 행 끝 ↔ 행 시작 - + 行首<->行首 행 시작 ↔ 행 시작 - + 同步器来源 동기화기 소스 - + ✕ ✕ - + ✓ ✓ @@ -7460,54 +7524,54 @@ configuration. 적용 성공 - + 提示:参数不正确 경고: 매개변수 오류 - + 要求:触发长度小于喷印间隔 요구사항: 트리거 길이는 인쇄 간격보다 작아야 함 - - - - + + + + 延时(毫米): 지연(mm): - - - + + + 触发延时(毫米) 트리거 지연(mm) - - + + 重复间隔(毫米) 반복 간격(mm) - - + + 封锁间隔(毫米) 잠금 간격(mm) - + 封锁间隔(毫秒) 잠금 간격(ms) - + 字符宽度 문자 너비 - + 喷印比例(%) 인쇄 비율(%) @@ -8186,123 +8250,123 @@ configuration. 양식 - + ✓ ✓ - + ✕ ✕ - + 整体设置 전체 설정 - - - + + + 班时编号 근무조 번호 - - + + 班时时间 근무조 시간 - - + + 新建行 새로운 행 - + 标号 번호 - + 1 1 - + 00:00 00:00 - + A a - + 2 2 - + 08:09 08:09 - + B - + 3 3 - + 12:00 12:00 - + C - + 可选用的班次时间: 선택적 근무조 시간 - + 23 23 - - + + ← - - + + → - + 添加 추가 - + 移除 제거 - + hh:mm hh:mm @@ -8338,15 +8402,30 @@ configuration. 대화 상자 - + 采用预设值 사전 설정 값 사용 - + 确认 확인 + + + 预设值: + + + + + 当前值: + + + + + 采用当前值 + + SystemManage @@ -8356,7 +8435,7 @@ configuration. 양식 - + 手动控制泵阀 펌프/밸브 수동 제어 @@ -8366,51 +8445,49 @@ configuration. 노즐 역방향세척 - + 回收槽开 거터 열기 - - - - - - - - - - + + + + + + + + + + 停止 중지 - + 回收槽关 거터 닫기 - 切换键盘 - 키보드 전환 + 키보드 전환 - 烧录单片机软件 - 단일 칩 소프트웨어 기록 + 단일 칩 소프트웨어 기록 - + 重启 재시작 - + 环境配置 환경 설정 - + ✕ ✕ @@ -8419,33 +8496,33 @@ configuration. 피드백 밸브 - + 回收泵 석션 펌프 - - + + 压缩机 압축기 - + 主墨泵 메인 펌프 - + 泄压阀 압력 밸브 - + 循环阀 순환 밸브 - + 墨水阀 잉크 밸브 @@ -8454,38 +8531,35 @@ configuration. 유지보수 간격 설정 - + 粘度泵 점도 펌프 - + 混合阀 혼합 밸브 - 时间设置 - 시간 설정 + 시간 설정 系统升级 시스템 업그레이드 - 烧录FPGA - FPGA 기록 + FPGA 기록 - + 排气 배기 - 导出配置到U盘 - 설정 USB로 내보내기 + 설정 USB로 내보내기 自动清洗 @@ -8500,18 +8574,17 @@ configuration. 모터 테스트 - 更新字库 - 폰트 라이브러리 + 폰트 라이브러리 업데이트 - + 齿轮泵开 기어 펌프 열기 - + 齿轮泵关 기어 펌프 닫기 @@ -8520,24 +8593,21 @@ configuration. 화면 전환 - 导出字库 - 폰트 라이브러리 + 폰트 라이브러리 내보내기 - 从U盘导入配置 - USB에서 설정 가져오기 + USB에서 설정 가져오기 屏幕校正 터치스크린 보정 - 更新软件 - 소프트웨어 업데이트 + 소프트웨어 업데이트 出厂设置 @@ -8552,7 +8622,7 @@ configuration. 기계 코드 설정 - + Cancel 취소 @@ -8561,121 +8631,118 @@ configuration. (1/2) 세척 중, 잠시 기다려주세요... - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + 开 수집기 열기 - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + 关 회수 탱크 종료 - - - - - - - - - - - + + + + + + + + + + 警告 경고 - - - + + + 请先移开喷头盖! 프린트 헤드 커버를 제거하세요! - + 是否确认进入手动模式? 수동 모드로 전환하시겠습니까? - + 请先确认已经关闭回收槽,确认进入自动模式? 노즐 닫혔는지 확인하세요. 자동 모드로 전환하시겠습니까? - - - - + + + + 手动 수동 - - - - - + + + + + 自动 자동 - - - - - - - - + + + + + + + + 启动 시작 - + Application 애플리케이션 - + 是否确认更新字库? 폰트 라이브러리를 업데이트하시겠습니까? - + 更新字库成功,重启后生效! 폰트 라이브러리 업데이트 성공, 재시작 후 적용됩니다! @@ -8684,17 +8751,17 @@ configuration. 공장 초기화를 복원하시겠습니까? - + 恢复出厂设置成功,请重新关机上电 공장 초기화 성공, 프린터를 재시작하세요. - + 校准触摸屏 터치스크린 보정 - + 是否确认开始校准程序?请小心进行校准! 터치스크린 보정을 시작하시겠습니까? 주의해서 조작하세요. @@ -8703,154 +8770,153 @@ configuration. 스크립트 생성 실패 - - - - + + + + 密码不正确! 비밀번호 오류! - + 是否确认更新软件? 소프트웨어를 업데이트하시겠습니까? - + 软件更新成功,重启后生效! 소프트웨어 업데이트 성공, 재시작 후 적용됩니다! - - - - - - - - - - + + + + + + + + + 错误 오류 - + 没找到对应字库,更新失败! 해당 폰트 라이브러리를 찾을 수 없어 업데이트 실패! - + 更新失败! 업데이트 실패! - + 找不到更新软件! 업데이트 소프트웨어를 찾을 수 없습니다! - + 是否确认更新系统? 시스템을 업데이트하시겠습니까? - + 系统更新成功,重启后生效! 시스템 업데이트 성공, 재시작 후 적용됩니다! - + 文件不存在! 파일이 존재하지 않습니다! - + 压力 압력 - + autoclean cancel or status: 자동 세척 취소 또는 상태: - + (2/3) Cleaning (2/3) 세척 중 - + (3/3) Cleaning (3/3) 세척 완료 - + 确定要升级FPGA软件吗? FPGA 소프트웨어를 업데이트하시겠습니까? - + 找不到 lib.tar! lib.tar을 찾을 수 없습니다! - + 无法删除旧的 lib.tar! 이전 lib.tar을 삭제할 수 없습니다! - + 复制 tar 包失败! tar 패키지 복사 실패! - + 解压失败,请检查权限! 압축 해제 실패, 권한을 확인하세요! - + 移动库文件失败! 라이브러리 파일 이동 실패! - + 环境配置成功! 환경 설정 성공! - + 切换失败! 전환 실패! - + 切换成功,重启后生效! 전환 성공, 재시작 후 적용됩니다! - + 找不到软件! 소프트웨어를 찾을 수 없습니다! - + 找到多个软件,请删除多余的文件,只保留一个! 여러 소프트웨어를 찾았습니다, 중복 파일을 삭제하고 하나만 남겨주세요! - + 确定要升级单片机软件吗? 단일 칩 소프트웨어를 업데이트하시겠습니까? - + 升级成功,请重启QtUI! 업데이트 성공, QtUI를 재시작하세요! - + 升级失败! 업데이트 실패! @@ -8892,12 +8958,12 @@ configuration. 혼합 밸브 3 열기: - + 配置文件/udisk/sysPara.bin不存在! 설정 파일 /udisk/sysPara.bin이 존재하지 않습니다! - + autoclean start 자동 세척 시작 @@ -8914,27 +8980,24 @@ configuration. (1/3) 세척 중 - 是否确认导出字库到U盘? - 폰트 라이브러리를 USB로 내보내시겠습니까? + 폰트 라이브러리를 USB로 내보내시겠습니까? - U盘不可识别! - USB 인식 불가! + USB 인식 불가! - 字库导出完成! - 폰트 라이브러리 내보내기 완료! + 폰트 라이브러리 내보내기 완료! - + 是否开始电机测试? 모터 테스트를 시작하시겠습니까? - + 正在排气,是否停止? 배기 중입니다. 중지하시겠습니까? @@ -8955,29 +9018,28 @@ configuration. 백업 작업 실패! - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + 提示 팁 @@ -9002,37 +9064,37 @@ configuration. 잉크 공급 밸브 - + 如果开始清洗,务必确认回收槽已经打开10毫米以上,并且在一分钟后将停止清洗 세척 시작 시 수집기가 10mm 이상 열려 있는지 확인하세요. 1분 후 중지됩니다. - + 开始清洗 세척 시작 - + 停止清洗 세척 중지 - + 是否确认导出配置到U盘? 설정을 USB로 내보내시겠습니까? - + 检测不到U盘 USB가 감지되지 않습니다. - + 成功导出配置到U盘 설정 USB로 내보내기 성공 - + 是否确认从U盘导入配置? USB에서 설정을 가져오시겠습니까? @@ -9041,7 +9103,7 @@ configuration. 설정 파일 /udisk/sysPara.bin이 존재하지 않습니다! - + 从U盘成功导入配置,重启后生效! 설정 가져오기 성공, 재시작 후 적용됩니다! @@ -9228,12 +9290,12 @@ configuration. 60 - + ✓ ✓ - + ✕ ✕ @@ -9275,14 +9337,13 @@ configuration. 지속 가열 - + 重置高压 고전압 재설정 - 界面语言设置 - 인터페이스 언어 설정 + 인터페이스 언어 설정 应用当前配置 @@ -9362,7 +9423,7 @@ configuration. 대형 노즐 - + 喷嘴逆清洗 노즐 역방향세척 @@ -9380,39 +9441,39 @@ configuration. 128K - - + + 错误 오류 - + 实际频率不能为%1 실제 주파수는 %1이 될 수 없음 - - + + 提示 팁 - + 应用成功 적용 성공 - + 自动清洗时间约为一分钟,然后自动停止 자동 세척 시간은 약 1분 후 자동 중단됩니다. - + 开始清洗 세척 시작 - + 停止清洗 세척 중지 @@ -9421,7 +9482,7 @@ configuration. 수동 모드 진입 중...... - + 正在喷嘴逆清洗...... 노즐 역세척 진행 중...... @@ -9430,19 +9491,12 @@ configuration. 자동 검색은 시간이 오래 걸립니다. 현재 주파수 2K 범위 내 최적 크리스탈 주파수를 검색하시겠습니까? - - Tiếng Việt(Vietnamese interface) - - - - Chinese interface(中文界面) - 중국어 인터페이스 + 중국어 인터페이스 - English interface(英文界面) - 영어 인터페이스 + 영어 인터페이스 喷嘴逆清洗完成 @@ -9457,7 +9511,7 @@ configuration. 리클레임 탱크 폐쇄 중...... - + 清洗完成 세척 완료 @@ -9466,17 +9520,17 @@ configuration. 비밀번호 오류! - + Application 애플리케이션 - + 是否更新高压包电流数据? 고전압 변압기 전류 데이터를 업데이트하시겠습니까? - + 喷头盖未关,请先关喷头盖! 헤드 커버 닫기 필요! @@ -9533,12 +9587,12 @@ configuration. 최적 크리스탈 주파수 검색 완료 - + Oscillator voltage %1 --- 最长高电平时钟 %2 오실레이터 전압 %1 --- 최장 고전압 클럭 %2 - + 最佳晶振电压完成 최적 크리스탈 전압 검색 완료 @@ -9572,26 +9626,67 @@ configuration. ✕ - + 烧录FPGA FPGA 기록 - + 更新软件 소프트웨어 업데이트 - + + 界面语言设置 + 인터페이스 언어 설정 + + + 烧录单片机软件 단일 칩 소프트웨어 기록 - + 更新字库 폰트 라이브러리 업데이트 + + + 导出字库 + 폰트 라이브러리 + 내보내기 + + + + 警告 + 경고 + + + + 是否确认导出字库到U盘? + 폰트 라이브러리를 USB로 내보내시겠습니까? + + + + 错误 + 오류 + + + + U盘不可识别! + USB 인식 불가! + + + + 提示 + 팁 + + + + 字库导出完成! + 폰트 라이브러리 내보내기 완료! + TestPrintWidget @@ -9601,40 +9696,18 @@ configuration. 테스트 인쇸 - QWidget { font-family: Arial; font-size: 12px; } - QWidget { font-family: Arial; font-size: 12px; } + QWidget { font-family: Arial; font-size: 12px; } - - - - - - - - QPushButton { - border: 1px solid #cccccc; border-radius:8px; - padding: 10px; - font-size: 14px; - text-align: center; - } - QPushButton:checked { - border: 2px solid #0078d7; - background-color: #f0f8ff; - } - - - - - + + background-color:#828E9E; - - - + + QPushButton { background: qlineargradient(x1: 0.5, y1: 0, x2: 0.5, y2: 1, stop: 0 #6F9CD6, stop: 1 #FFFFFF); border: 1px solid #a0a0a0; @@ -9652,14 +9725,13 @@ configuration. - + background-color:#C4C5C9; - - - + + QPushButton { background-color: #ffffff; border: 1px solid #a8a8a8; @@ -9675,64 +9747,140 @@ configuration. - - QComboBox { - background-color: #e5e5e5; - border: 1px solid #a8a8a8; - border-radius: 2px; - padding: 4px 20px 4px 8px; - icon-size:60px 60px; - } - QComboBox::drop-down { width: 30px; } - - - - + UK UK - + US US - 5点(英) - 5 도트(영) + 5 도트(영) - 7点(英) - 7 도트(영) + 7 도트(영) - 9点(英) - 5 도트(영) {9点?} + 5 도트(영) {9点?} - 12点(英) - 5 도트(영) {12点?} + 5 도트(영) {12点?} - 16点(英) - 5 도트(영) {16点?} + 5 도트(영) {16点?} - 24点(英) - 5 도트(영) {24点?} + 5 도트(영) {24点?} - 32点(英) - 5 도트(영) {32点?} + 5 도트(영) {32点?} - + + 文字 + + + + + 条形码 + 바코드 + + + + 图标 + 아이콘 + + + + 日期时间 + + + + + 计数器 + + + + + 轮班 + + + + + 保存 + 저장 + + + + 打印设置 + 인쇄 설정 + + + + 图元设置 + + + + + 复制 + 복사 + + + + 粘贴 + 붙여넣기 + + + + 删除 + Delete + + + + 5 dot + + + + + 7 dot + + + + + 9 dot + + + + + 12 dot + + + + + 16 dot + + + + + 24 dot + + + + + 32 dot + + + + QLineEdit { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -9744,13 +9892,13 @@ configuration. - + JET2neo-TEST JET2neo-TEST - - + + QPushButton { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -9769,19 +9917,19 @@ configuration. - + << << - + >> - - - + + + QLabel { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -9794,20 +9942,20 @@ configuration. - + Y:9 Y:9 - + X:105 X:105 - - - - + + + + QPushButton { background-color: #87CEEB; border: 1px solid #4682B4; @@ -9827,42 +9975,42 @@ configuration. - + ↑ - + ← - + → - + ↓ - + ID:1 - + ✓ ✓ - + 提示 팁 - + 是否保存文件? 파일을 저장하시겠습니까? @@ -10301,121 +10449,119 @@ configuration. 폰트 라이브러리 편집 - + 编辑图案 패턴 편집 - + 缩小 축소 - + 放大 확대 - + 宽度 너비 - + 新建 새로 만들기 - + 高度 높이 - - - + + + 保存 저장 - + 保存为 다른 이름으로 저장 - + 打开 파일 열기 - 导入 - 가져오기 + 가져오기 - A - a + a - + ✕ ✕ - + 图像扩张 이미지 확장 - + 图像裁剪 이미지 자르기 - + 提示 팁 - + 图片已经改变,是否保存? 이미지가 변경되었습니다. 저장하시겠습니까? - + 放弃保存 저장 없이 종료 - - - + + + 放大倍数:%1 확대율: %1 - + 图片另存为... 이미지 다른 이름으로 저장... - + 另存为 다른 이름으로 저장 - + 打开文件 파일 열기 - + 图片保存为... 이미지를...로 저장 - + 导入文件 파일 가져오기 @@ -10638,18 +10784,18 @@ configuration. zkWidget - - + + 警告 경고 - + 最大支持宽度:%1 高度:%2 当前请求:%3 x %4 최대 지원 너비:%1 높이:%2 / 현재 요청:%3 x %4 - + 请新创建建图片 새 패턴 파일 생성 필요 diff --git a/loginfo.ui b/loginfo.ui index cde2a78..f64fb54 100644 --- a/loginfo.ui +++ b/loginfo.ui @@ -30,7 +30,10 @@ 0 - + + + 9 + @@ -47,6 +50,9 @@ 当前状态 + + 15 + @@ -147,6 +153,9 @@ 历史状态 + + 15 + @@ -204,7 +213,13 @@ 0 - 70 + 60 + + + + + 16777215 + 60 @@ -217,7 +232,13 @@ 0 - 70 + 60 + + + + + 16777215 + 60 @@ -230,7 +251,13 @@ 0 - 70 + 60 + + + + + 16777215 + 60 @@ -263,7 +290,13 @@ 100 - 70 + 60 + + + + + 16777215 + 60 @@ -280,12 +313,21 @@ 版本信息 + + 15 + 100 - 70 + 60 + + + + + 16777215 + 60 @@ -362,1409 +404,1515 @@ 机器状态 - - - - 150 - 180 - 381 - 81 - + + + 30 - - - 0 - - - 4 - - - - - - 150 - 20 - - - - 粘度 - - - - - - - - 150 - 20 - - - - 高压包 - - - - - - - - 88 - 0 - - - - - 16777215 - 20 - - - - - - - - - - - - 150 - 20 - - - - 隔膜位置 - - - - - - - - 88 - 0 - - - - - 64 - 20 - - - - - - - - - - - - 0 - 0 - - - - - 70 - 0 - - - - - 16777215 - 20 - - - - - - - - - - - - 110 - 20 - - - - - 500 - 16777215 - - - - QFrame::NoFrame - - - - - - - - - - - 88 - 0 - - - - - 16777215 - 20 - - - - - - - - - - - - 150 - 20 - - - - 压力 - - - - - - - TextLabel - - - - - - - - - 630 - 360 - 100 - 70 - - - - - 100 - 70 - - - - ✕ - - - - - - 20 - 60 - 751 - 96 - - - - - - - - 0 - 0 - - - - - 60 - 16777215 - - - - - - - :/image/ALARMGreen.PNG - - - - - - - - 0 - 0 - - - - - 60 - 16777215 - - - - - - - :/image/ALARMGreen.PNG - - - - - - - - 0 - 0 - - - - - 60 - 16777215 - - - - - - - :/image/ALARMGreen.PNG - - - - - - - - 0 - 0 - - - - - 60 - 16777215 - - - - - - - :/image/ALARMGreen.PNG - - - - - - - - 0 - 0 - - - - - 60 - 16777215 - - - - - - - :/image/ALARMGreen.PNG - - - - - - - - 0 - 0 - - - - - 60 - 16777215 - - - - - - - :/image/ALARMGreen.PNG - - - - - - - - 0 - 0 - - - - - 60 - 16777215 - - - - - - - :/image/ALARMGreen.PNG - - - - - - - - 0 - 0 - - - - - 60 - 16777215 - - - - - - - :/image/ALARMGreen.PNG - - - - - - - - 0 - 60 - - - - - 60 - 16777215 - - - - - - - :/image/reset.png - - - - - - - - 60 - 0 - - - - - 70 - 16777215 - - - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - - - 159 - 158 - 158 - - - - - - - 159 - 158 - 158 - - - - - - - 159 - 158 - 158 - - - - - - - - 墨线开关 - - - - - - - - 60 - 0 - - - - - 70 - 16777215 - - - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - - - 159 - 158 - 158 - - - - - - - 159 - 158 - 158 - - - - - - - 159 - 158 - 158 - - - - - - - - 墨水缸满 - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - 60 - 0 - - - - - 70 - 16777215 - - - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - - - 159 - 158 - 158 - - - - - - - 159 - 158 - 158 - - - - - - - 159 - 158 - 158 - - - - - - - - 墨水液位 - - - - - - - - 60 - 0 - - - - - 70 - 16777215 - - - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - - - 159 - 158 - 158 - - - - - - - 159 - 158 - 158 - - - - - - - 159 - 158 - 158 - - - - - - - - 溶剂液位 - - - - - - - - 60 - 0 - - - - - 70 - 16777215 - - - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - - - 159 - 158 - 158 - - - - - - - 159 - 158 - 158 - - - - - - - 159 - 158 - 158 - - - - - - - - 回收故障 - - - - - - - - 60 - 0 - - - - - 70 - 16777215 - - - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - - - 159 - 158 - 158 - - - - - - - 159 - 158 - 158 - - - - - - - 159 - 158 - 158 - - - - - - - - 粘度故障 - - - - - - - - 60 - 0 - - - - - 70 - 16777215 - - - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - - - 159 - 158 - 158 - - - - - - - 159 - 158 - 158 - - - - - - - 159 - 158 - 158 - - - - - - - - 相位故障 - - - - - - - - 60 - 0 - - - - - 70 - 16777215 - - - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - - - 159 - 158 - 158 - - - - - - - 159 - 158 - 158 - - - - - - - 159 - 158 - 158 - - - - - - - - 高压故障 - - - - - - - - 60 - 0 - - - - - 70 - 16777215 - - - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - - - 159 - 158 - 158 - - - - - - - 159 - 158 - 158 - - - - - - - 159 - 158 - 158 - - - - - - - - 故障恢复 - - - - - + + + + Qt::Vertical + + + + 20 + 29 + + + + + + + + 30 + + + 30 + + + + + + 0 + 0 + + + + + 60 + 16777215 + + + + + + + :/image/ALARMGreen.PNG + + + + + + + + 0 + 0 + + + + + 60 + 16777215 + + + + + + + :/image/ALARMGreen.PNG + + + + + + + + 0 + 0 + + + + + 60 + 16777215 + + + + + + + :/image/ALARMGreen.PNG + + + + + + + + 0 + 0 + + + + + 60 + 16777215 + + + + + + + :/image/ALARMGreen.PNG + + + + + + + + 0 + 0 + + + + + 60 + 16777215 + + + + + + + :/image/ALARMGreen.PNG + + + + + + + + 0 + 0 + + + + + 60 + 16777215 + + + + + + + :/image/ALARMGreen.PNG + + + + + + + + 0 + 0 + + + + + 60 + 16777215 + + + + + + + :/image/ALARMGreen.PNG + + + + + + + + 0 + 0 + + + + + 60 + 16777215 + + + + + + + :/image/ALARMGreen.PNG + + + + + + + + 70 + 70 + + + + + 70 + 16777215 + + + + + + + :/image/reset.png + + + + + + + + 60 + 0 + + + + + 70 + 16777215 + + + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + + + 159 + 158 + 158 + + + + + + + 159 + 158 + 158 + + + + + + + 159 + 158 + 158 + + + + + + + + 墨线开关 + + + + + + + + 60 + 0 + + + + + 70 + 16777215 + + + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + + + 159 + 158 + 158 + + + + + + + 159 + 158 + 158 + + + + + + + 159 + 158 + 158 + + + + + + + + 墨水缸满 + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 60 + 0 + + + + + 70 + 16777215 + + + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + + + 159 + 158 + 158 + + + + + + + 159 + 158 + 158 + + + + + + + 159 + 158 + 158 + + + + + + + + 墨水液位 + + + + + + + + 60 + 0 + + + + + 70 + 16777215 + + + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + + + 159 + 158 + 158 + + + + + + + 159 + 158 + 158 + + + + + + + 159 + 158 + 158 + + + + + + + + 溶剂液位 + + + + + + + + 60 + 0 + + + + + 70 + 16777215 + + + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + + + 159 + 158 + 158 + + + + + + + 159 + 158 + 158 + + + + + + + 159 + 158 + 158 + + + + + + + + 回收故障 + + + + + + + + 60 + 0 + + + + + 70 + 16777215 + + + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + + + 159 + 158 + 158 + + + + + + + 159 + 158 + 158 + + + + + + + 159 + 158 + 158 + + + + + + + + 粘度故障 + + + + + + + + 60 + 0 + + + + + 70 + 16777215 + + + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + + + 159 + 158 + 158 + + + + + + + 159 + 158 + 158 + + + + + + + 159 + 158 + 158 + + + + + + + + 相位故障 + + + + + + + + 60 + 0 + + + + + 70 + 16777215 + + + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + + + 159 + 158 + 158 + + + + + + + 159 + 158 + 158 + + + + + + + 159 + 158 + 158 + + + + + + + + 高压故障 + + + + + + + + 60 + 0 + + + + + 70 + 16777215 + + + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + + + 159 + 158 + 158 + + + + + + + 159 + 158 + 158 + + + + + + + 159 + 158 + 158 + + + + + + + + 故障恢复 + + + + + + + + + 30 + + + 0 + + + 4 + + + + + + 110 + 20 + + + + + 500 + 16777215 + + + + QFrame::NoFrame + + + + + + + + + + + 150 + 20 + + + + 粘度 + + + + + + + + 150 + 20 + + + + 高压包 + + + + + + + + 150 + 20 + + + + 压力 + + + + + + + + 88 + 0 + + + + + 16777215 + 20 + + + + + + + + + + + TextLabel + + + + + + + + 88 + 0 + + + + + 64 + 20 + + + + + + + + + + + + 88 + 0 + + + + + 16777215 + 20 + + + + + + + + + + + + 150 + 20 + + + + 隔膜位置 + + + + + + + + 0 + 0 + + + + + 70 + 0 + + + + + 16777215 + 20 + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + 30 + + + + + + 150 + 50 + + + + + 150 + 50 + + + + 喷嘴逆清洗 + + + + + + + + 200 + 50 + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Vertical + + + + 20 + 30 + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 100 + 60 + + + + + 16777215 + 60 + + + + ✕ + + + + + + diff --git a/loginfoctrl.cpp b/loginfoctrl.cpp new file mode 100644 index 0000000..ac075c5 --- /dev/null +++ b/loginfoctrl.cpp @@ -0,0 +1,21 @@ +#include "loginfoctrl.h" + +void LogInfoCtrl::emitSigClean() +{ + emit sig_clean(); +} + +void LogInfoCtrl::emitSigCleanOver(bool flag) +{ + emit sig_cleanOver(flag); +} + +void LogInfoCtrl::emitSigShow() +{ + emit sig_show(); +} + +LogInfoCtrl::LogInfoCtrl() +{ + +} diff --git a/loginfoctrl.h b/loginfoctrl.h new file mode 100644 index 0000000..eb21daa --- /dev/null +++ b/loginfoctrl.h @@ -0,0 +1,29 @@ +#ifndef LOGINFOCTRL_H +#define LOGINFOCTRL_H + +#include + + +class LogInfoCtrl : public QObject +{ + Q_OBJECT +public: + static LogInfoCtrl* instance() { + static LogInfoCtrl ins; + return &ins; + } + + void emitSigClean(); + void emitSigCleanOver(bool flag); + void emitSigShow(); + +private: + LogInfoCtrl(); + +signals: + void sig_clean(); + void sig_cleanOver(bool flag); + void sig_show(); +}; + +#endif // LOGINFOCTRL_H diff --git a/mainwidget.cpp b/mainwidget.cpp index c383818..34e8c98 100644 --- a/mainwidget.cpp +++ b/mainwidget.cpp @@ -29,6 +29,7 @@ #include #include "scene/PicDateItem.h" #include "scene/PicScheduleShiftItem.h" +#include "scene/piccodeitem.h" #include extern MyInputMethod *myInputMethod; @@ -40,7 +41,6 @@ MainWidget::MainWidget(QWidget* parent) { // 加载UI文件 ui.setupUi(this); - initSheet(); // 关联成员变量到UI控件 m_EditBtn = ui.m_EditBtn; @@ -69,10 +69,12 @@ MainWidget::MainWidget(QWidget* parent) // ui.labelRunStatus->setWordWrap(true); ui.sub3->installEventFilter(this); + ui.fra_state->installEventFilter(this); ui.labelTotalProductCnt->hide(); ui.lb_counter->hide(); - enablePrintButton(true); + changeHighLight(false); + enablePrintButton(false); } MainWidget::~MainWidget() @@ -1398,7 +1400,7 @@ bool MainWidget::dateTimeItemsDotUpdate() if(!item) continue; - if(item->sourceType() != SourceType::DATETIME && item->sourceType() != SourceType::SCHEDULE_SHIFT) + if(item->sourceType() != SourceType::DATETIME && item->sourceType() != SourceType::SCHEDULE_SHIFT && item->sourceType() != SourceType::CODE) continue; if(item->sourceType() == SourceType::DATETIME) { @@ -1423,6 +1425,18 @@ bool MainWidget::dateTimeItemsDotUpdate() continue; } + if(item->sourceType() == SourceType::CODE) { + auto codeItem = dynamic_cast(item); + if(!codeItem) + continue; + + QVector counterValus{sysPara->para.cnt1CurrValue, sysPara->para.cnt2CurrValue}; + auto b = codeItem->updateVariants(counterValus); + isUpdate |= b; + if(!b) + continue; + } + QImage img = item->preview(); if(img.isNull()) { ++nbInvaliedDatetimePreview; @@ -1430,9 +1444,9 @@ bool MainWidget::dateTimeItemsDotUpdate() } auto sceneRect = pPicScene->sceneRect(); - QRectF itemRect(item->pos(), img.size()); + auto boundingRect = pPicScene->itemsBoundingRect(); + QRectF itemRect(item->pos() - boundingRect.topLeft(), img.size()); totalOfDatetimeNumber++; - // 裁剪item位置, 确保item位于场景内 // 如果item超出了场景范围,则裁剪img并更新itemRect,只显示场景内的部分 @@ -1457,9 +1471,6 @@ bool MainWidget::dateTimeItemsDotUpdate() totalOfProcessedDots += imageToPrintData(img, (int)itemRect.left(), (int)itemRect.top()); } -// if(totalOfProcessedDots) -// LogInfo::setRunStatusText(QString("totalOfProcessedDots: %1").arg(totalOfProcessedDots)); - return isUpdate; } @@ -1636,26 +1647,13 @@ void MainWidget::on_m_StartBtn_clicked() } sysPara->status.isPrinting=false; -// setRunStatus(tr("开始打印1")); hlp -// qDebug()<textEdit->toPlainText()); + SendPrintDataToFpga(0); // 0--正常打印,1--打印交替部分信息1; 2--打印交替部分信息2, -// if(sysPara->para.isCheckInsertTime) -// { -// if(!startPrintingFlag) -// { -// LogInfo::setRunStatusText(tr("开始打印")); -// } -// } -// else -// { -// LogInfo::setRunStatusText(tr("开始打印")); -// } + /*-------------------------------------------------------------------*/ // ui->labelSynColDelay->setText(""); sysPara->status.lastSynColDelay = -1; //目的是为了清空原来的数据 - /*--------------------------------暂停按钮------------------------------*/ -// ui->pushButtonPausePrint->setEnabled(true); - // ui->pushButtonPausePrint->setText(tr("暂停打印")); + /*---------------------------------开关回收槽------------------------------*/ enableReclaimCtrlButton(false); // updatePrintDisplayLabel(); hlp @@ -1665,13 +1663,11 @@ void MainWidget::on_m_StartBtn_clicked() sysPara->devOp->printCtrl(PRINT_CTRL_START); printintFlag = true; } - else - { - //如果已经在打印,则不要在发送start命令,只要更新相应的数据即可 -// if(!printintFlag) //如果在暂停,重复取消暂停 -// on_pushButtonPausePrint_pressed(); - } + startPrintingFlag = true;sysPara->status.isPrinting=true; + + // 高亮切换 + changeHighLight(true); } } @@ -1713,6 +1709,8 @@ void MainWidget::on_m_StopBtn_clicked() } } + // 高亮切换 + changeHighLight(false); } } @@ -1887,32 +1885,76 @@ void MainWidget::reclaimTanOpen() void MainWidget::initSheet() { // 仅当前按钮生效 - ui.m_StartBtn->setStyleSheet(R"( - QPushButton { - background-color: #27ae60; - color: black; - border-radius: 5px; - } - QPushButton:disabled { - background-color: #bdc3c7; - color: #7f8c8d; - } - )"); + ui.m_StartBtn->setStyleSheet( + R"( + QPushButton { + background-color: #1e8449; + color: black; + border-radius: 5px; + } + QPushButton:disabled { + background-color: #bdc3c7; /* 灰色背景 */ + color: #7f8c8d; /* 灰色文字 */ + border: 1px solid #95a5a6; /* 灰色边框 */ + } + )"); - ui.m_StopBtn->setStyleSheet(R"( - QPushButton { - background-color: #e74c3c; - color: black; - border-radius: 5px; - } + ui.m_StopBtn->setStyleSheet( + R"( + QPushButton { + background-color: #e74c3c; + color: black; + border-radius: 5px; + } + QPushButton:disabled { + background-color: #bdc3c7; /* 灰色背景 */ + color: #7f8c8d; /* 灰色文字 */ + border: 1px solid #95a5a6; /* 灰色边框 */ + } + )"); - QPushButton:disabled { - background-color: #bdc3c7; - color: #7f8c8d; - } - )"); +} -// this->setStyleSheet(styleSheet); +void MainWidget::changeHighLight(bool isStart) +{ + initSheet(); + if (isStart) { + QString highlightStyle = + R"( + QPushButton { + background-color: #27ae60; + color: black; + border-radius: 5px; + border: 3px solid #f39c12; + box-shadow: 0 0 8px rgba(231, 76, 60, 0.6); + } + QPushButton:disabled { + background-color: #bdc3c7; /* 灰色背景 */ + color: #7f8c8d; /* 灰色文字 */ + border: 1px solid #95a5a6; /* 灰色边框 */ + } + )"; + m_StartBtn->setStyleSheet(highlightStyle); + + + } else { + QString highlightStyle = + R"( + QPushButton { + background-color: #f07167; + color: black; + border-radius: 5px; + border: 3px solid #f39c12; + box-shadow: 0 0 8px rgba(231, 76, 60, 0.6); + } + QPushButton:disabled { + background-color: #bdc3c7; /* 灰色背景 */ + color: #7f8c8d; /* 灰色文字 */ + border: 1px solid #95a5a6; /* 灰色边框 */ + } + )"; + m_StopBtn->setStyleSheet(highlightStyle); + } } void MainWidget::on_m_RightBtn_clicked() @@ -2028,17 +2070,8 @@ static int oldsizeSTM32 = -1; static int reclaimTankDelay = 0; void MainWidget::updateSysStatusToUI(){ //100ms if(sysPara){ - if(sysPara->para.gearPumpEnable) - { -// ui->label_11->setText(tr("齿轮泵转速")); - } - else - { -// ui->label_11->setText(tr("隔膜位置")); - } RefreshStatusLight(); if(sysPara->status.lastProductCnt != sysPara->status.productCnt){ //产品计数 - //ui.labelProductCnt->setText(QString::number(sysPara->status.productCnt)); updateTotalCnt(0); } @@ -2047,9 +2080,6 @@ void MainWidget::updateSysStatusToUI(){ //100ms sysPara->status.ExpiryDispUpdate--; m_PrintDisplay->update();// 2018.5.25 } -// if(sysPara->para.alterPrint.enable==1) ui->labelXFileName->setText (tr("交替打印")); -// else if(sysPara->para.alterPrint.enable==2) ui->labelXFileName->setText (tr("电眼交替")); -// else ui->labelXFileName->setText (""); /*--------------------------------------------------------------------------*/ //if(sysPara->para.printTriggerMode == PRINT_TRIGGER_SYNCHRONIZER && printintFlag){ //同步器速度 if(( @@ -2265,6 +2295,107 @@ void MainWidget::updateSysStatusToUI(){ //100ms } +bool MainWidget::checkRed(AlarmStatus &status) +{ + if (status.highVoltageFault == DEV_STATUS_RED) { + m_stateStr = tr("高压故障"); + return true; + } + if (status.chargeFault == DEV_STATUS_RED) { + m_stateStr = tr("相位故障"); + return true; + } + if (status.viscosityWarn == DEV_STATUS_RED) { + m_stateStr = tr("粘度故障"); + return true; + } + if (status.recycleWarn == DEV_STATUS_RED) { + m_stateStr = tr("回收故障"); + return true; + } + if (status.solveLevelWarn == DEV_STATUS_RED) { + m_stateStr = tr("溶液液位"); + return true; + } + if (status.inkWaterLevel == DEV_STATUS_RED) { + m_stateStr = tr("墨水液位"); + return true; + } + if (status.inkLeak == DEV_STATUS_RED) { + m_stateStr = tr("墨水缸满"); + return true; + } + if (status.inkSwint == DEV_STATUS_RED) { + m_stateStr = tr("墨线开关"); + return true; + } + return false; +} + +bool MainWidget::checkYellow(AlarmStatus &status) +{ + if (status.highVoltageFault == DEV_STATUS_YELLOW) { + m_stateStr = tr("高压故障"); + return true; + } + if (status.chargeFault == DEV_STATUS_YELLOW) { + m_stateStr = tr("相位故障"); + return true; + } + if (status.viscosityWarn == DEV_STATUS_YELLOW) { + m_stateStr = tr("粘度故障"); + return true; + } + if (status.recycleWarn == DEV_STATUS_YELLOW) { + m_stateStr = tr("回收故障"); + return true; + } + if (status.solveLevelWarn == DEV_STATUS_YELLOW) { + m_stateStr = tr("溶液液位"); + return true; + } + if (status.inkWaterLevel == DEV_STATUS_YELLOW) { + m_stateStr = tr("墨水液位"); + return true; + } + if (status.inkLeak == DEV_STATUS_YELLOW) { + m_stateStr = tr("墨水缸满"); + return true; + } + if (status.inkSwint == DEV_STATUS_YELLOW) { + m_stateStr = tr("墨线开关"); + return true; + } + return false; +} + +void MainWidget::updateGeneralState(AlarmStatus status) +{ + // 有红则红,全绿则绿,红>黄>绿 + // 检查从后往前判断,因为取最后一个状态QString + bool isRed = checkRed(status); + if (isRed) { + m_stateColor = DEV_STATUS_RED; + } else { + bool isYellow = checkYellow(status); + if (isYellow) { + m_stateColor = DEV_STATUS_YELLOW; + } else { + m_stateColor = DEV_STATUS_GREEN; + m_stateStr= tr("正常"); + } + } + + if (m_stateColor == DEV_STATUS_GREEN) { + ui.fra_state->setStyleSheet("background-color: #ccffcc;"); + } else if (m_stateColor == DEV_STATUS_RED) { + ui.fra_state->setStyleSheet("background-color: #ff6b6b;"); + } else { + ui.fra_state->setStyleSheet("background-color: #ffd93c;"); + } + ui.lb_generalState->setText(m_stateStr); +} + int MainWidget::calculateMaxSpeed(int backup) { @@ -3039,18 +3170,9 @@ void MainWidget::handleEmptySize() return; } -void MainWidget::updatePrintDisplayLabel(){ -// if(sysPara && !sysPara->status.reclainTankReachEnd){ -// setRunStatus(tr("回收槽未到底!!!!!!")); -// } -// else if(startPrintingFlag ){ -// if(printintFlag) -// setRunStatus(tr("正在喷印...............")); -// else -// setRunStatus(tr("暂停喷印...............")); -// } -// else -// setRunStatus(""); +void MainWidget::updatePrintDisplayLabel() +{ + m_PrintDisplay->update(); } void MainWidget::RefreshStatusLight(){//100ms @@ -3344,18 +3466,6 @@ bool MainWidget::updatePhaseIndicatorLight(){ return sysPara->status.lastPhaseFault; } -void MainWidget::updateGeneralState(DevStatusLightType type, QString stateStr) -{ - if (type == DEV_STATUS_GREEN) { - ui.frame->setStyleSheet("background-color: #ccffcc;"); - } else if (type == DEV_STATUS_RED) { - ui.frame->setStyleSheet("background-color: #ff6b6b;"); - } else { - ui.frame->setStyleSheet("background-color: #ffd93c;"); - } - ui.lb_generalState->setText(stateStr); -} - bool MainWidget::eventFilter(QObject *watched, QEvent *event) { if (event->type() == QEvent::MouseButtonDblClick) { @@ -3363,9 +3473,16 @@ bool MainWidget::eventFilter(QObject *watched, QEvent *event) if (watched == ui.sub3 || watched == ui.labelProductCnt) { if (m_setNumDlg) { m_setNumDlg->show(); + return true; } } - return true; + } + + if (event->type() == QEvent::MouseButtonDblClick) { + if (watched == ui.fra_state || ui.lb_generalState) { + LogInfoCtrl::instance()->emitSigShow(); + return true; + } } return false; } diff --git a/mainwidget.h b/mainwidget.h index e7a27ae..9efa5dc 100644 --- a/mainwidget.h +++ b/mainwidget.h @@ -82,6 +82,14 @@ public: int getCurrPrintStatus(); void updateSysStatusToUI(); //重载 + //Mainwindow获取机器总状态 + DevStatusLightType m_stateColor = DEV_STATUS_GREEN; + //DEV_STATUS_GREEN:正常 + QString m_stateStr = "正常"; + bool checkRed(AlarmStatus &status); + bool checkYellow(AlarmStatus &status); + void updateGeneralState(AlarmStatus status); + void updateTotalCnt(int en); int calculateMaxSpeed(int backup); @@ -95,7 +103,6 @@ public: void RefreshStatusLight(); bool updatePhaseIndicatorLight(); - void updateGeneralState(DevStatusLightType type, QString stateStr); bool flagOfClearHighVltageWarnning; @@ -151,6 +158,9 @@ private: void reclaimTanOpen(); void initSheet(); + + // 高亮切换 + void changeHighLight(bool isStart); private slots: void airPushingProcess(); void buttonClickedSlot(); diff --git a/printSceneView.png b/printSceneView.png deleted file mode 100644 index 07213be..0000000 Binary files a/printSceneView.png and /dev/null differ diff --git a/scene/BarcodeEditor.cpp b/scene/BarcodeEditor.cpp index c63780c..52f44ac 100644 --- a/scene/BarcodeEditor.cpp +++ b/scene/BarcodeEditor.cpp @@ -5,6 +5,7 @@ #include "CounterEditor.h" #include #include +#include "DlgQrcodeFormat.h" // 使用SysPara的相关参数构造CounterEditorVM CounterEditorVM makeCounterVM(SysPara* sysPara, COUNTER_TYPE type, int digitalNum) @@ -53,6 +54,8 @@ BarcodeEditor::BarcodeEditor(QWidget *parent) : m_vm.dateViewModel = DateItemModel::createDefaultReplaceModel(); m_dateReplaceEditor->setDateModel(m_vm.dateViewModel); + connect(ui->cbBoxType, QOverload::of(&QComboBox::currentIndexChanged), this, &BarcodeEditor::onTypeChanged); + connect(&m_barcodeFormatEditor, &DlgBarcodeFormat::accepted, this, &BarcodeEditor::onBarcodeFormatConfirmed); connect(&m_qrcodeFormatEditor, &DlgQrcodeFormat::accepted, this, &BarcodeEditor::onQrcodeFormatConfirmed); } @@ -86,6 +89,21 @@ void BarcodeEditor::bindViewModel(const BarcodeViewModel& vm) { m_vm = vm; + // 通用设置视图模型 + auto b = ui->widGeneralSettings->blockSignals(true); + ui->widGeneralSettings->setViewModel(vm.generalSettingsVM); + ui->widGeneralSettings->blockSignals(b); + + // 内容模版 + b = ui->lineEditContent->blockSignals(true); + ui->lineEditContent->setText(m_vm.contentPattern); + ui->lineEditContent->blockSignals(b); + + // 类型选择框 + b = ui->cbBoxType->blockSignals(true); + ui->cbBoxType->setCurrentIndex(m_vm.type); + ui->cbBoxType->blockSignals(b); + // 缺失的代替表用默认值补齐 DateItemModel& dateVm = m_vm.dateViewModel; if (dateVm.dataMap.isEmpty() || dateVm.daysMap.isEmpty() || dateVm.monthsMap.isEmpty() @@ -154,8 +172,15 @@ void BarcodeEditor::bindViewModel(const BarcodeViewModel& vm) BarcodeViewModel BarcodeEditor::viewModel() { + m_vm.contentPattern = ui->lineEditContent->text(); + m_vm.type = (BarcodeType) (ui->cbBoxType->currentIndex()); + // 从子编辑器拉取最新值回写到 m_vm + // 通用设置 + m_vm.generalSettingsVM = ui->widGeneralSettings->viewModel(); + + // 日期设置,如果存在 {t} 变量 if(m_vm.contentPattern.contains("{t}")) { DateFormatEditorVM fmt = m_dateFormatEditor->viewModel(); m_vm.dateViewModel.datetimePattern = fmt.pattern; @@ -182,6 +207,7 @@ BarcodeViewModel BarcodeEditor::viewModel() m_vm.dateViewModel.hoursMap = rep.hoursMap; } + // 计数器设置,如果存在 {c} 变量 if(m_vm.contentPattern.contains("{c}")) { CounterEditorVM cnt = m_counterEditor->viewModel(); m_vm.counterViewModel.counterType = cnt.counterType; @@ -191,6 +217,58 @@ BarcodeViewModel BarcodeEditor::viewModel() return m_vm; } +void BarcodeEditor::restoreViewModel() +{ + m_vm.generalSettingsVM = ItemGeneralSettingsVM(); + m_vm.contentPattern = ""; + m_vm.counterViewModel = CounterViewModel(); + m_vm.dateViewModel = DateItemModel::createDefaultReplaceModel(); + m_vm.type = BARCODE_TYPE_BARCODE; + m_vm.format.setValue(DlgBarcodeFormatVM()); + bindViewModel(m_vm); +} + +/** + * @brief 逻辑基本类似 CounterVarSet::applyUIPara + * + */ +void BarcodeEditor::applyCounterConfigToSysPara() +{ + if(!m_vm.contentPattern.contains("{c}")) + return; + + CounterEditorVM cnt = m_counterEditor->viewModel(); + if(cnt.counterType == COUNTER_TYPE_1) { + m_sysPara->para.cnt1StartValue = cnt.counter1.startValue; + m_sysPara->para.cnt1EndValue = cnt.counter1.endValue; + m_sysPara->para.cnt1RepeateValue = cnt.counter1.repeatValue; + m_sysPara->para.cnt1StepValue = cnt.counter1.stepValue; + m_sysPara->para.cnt1CurrValue = cnt.counter1.currValue; + m_sysPara->status.cnt1CurrentValueInitDoneFlag = !cnt.counter1.editCurrValue; + + if(cnt.counter1.eleEyeIncEn) + m_sysPara->para.eleEyeClearCntInSynMode = (m_sysPara->para.eleEyeClearCntInSynMode | 0x10); // CNT1 +1 + else + m_sysPara->para.eleEyeClearCntInSynMode = (m_sysPara->para.eleEyeClearCntInSynMode & 0xef); // CNT1 = current + + } + else if(cnt.counterType == COUNTER_TYPE_2) { + m_sysPara->para.cnt2StartValue = cnt.counter2.startValue; + m_sysPara->para.cnt2EndValue = cnt.counter2.endValue; + m_sysPara->para.cnt2RepeateValue = cnt.counter2.repeatValue; + m_sysPara->para.cnt2StepValue = cnt.counter2.stepValue; + m_sysPara->para.cnt2CurrValue = cnt.counter2.currValue; + m_sysPara->status.cnt2CurrentValueInitDoneFlag = !cnt.counter2.editCurrValue; + + if(cnt.counter2.eleEyeIncEn) + m_sysPara->para.eleEyeClearCntInSynMode = (m_sysPara->para.eleEyeClearCntInSynMode | 0x20); // CNT2 +1 + else + m_sysPara->para.eleEyeClearCntInSynMode = (m_sysPara->para.eleEyeClearCntInSynMode & 0xdf); // CNT2 = current + } + + m_sysPara->devOp->writeFpgaCalandar(0); +} + void BarcodeEditor::onBtnFormatClicked() { if(m_vm.type == BARCODE_TYPE_BARCODE) { @@ -228,12 +306,15 @@ void BarcodeEditor::onBtnCounterClicked() void BarcodeEditor::onCheckBtnClicked() { m_vm = viewModel(); + applyCounterConfigToSysPara(); emit accepted(); + hide(); } void BarcodeEditor::onCloseBtnClicked() { emit rejected(); + hide(); } void BarcodeEditor::onBarcodeFormatConfirmed() @@ -256,6 +337,19 @@ void BarcodeEditor::onQrcodeFormatConfirmed() ui->cbBoxType->blockSignals(b); } +void BarcodeEditor::onTypeChanged(int i) +{ + if(m_vm.type == i) + return; + + m_vm.type = (BarcodeType)(i); + if(m_vm.type == BARCODE_TYPE_BARCODE) { + m_vm.format.setValue(DlgBarcodeFormatVM()); + } + else + m_vm.format.setValue(DlgQrcodeFormatVM()); +} + bool BarcodeEditor::eventFilter(QObject *obj, QEvent *event) { if(obj == ui->lineEditContent) { @@ -269,9 +363,17 @@ bool BarcodeEditor::eventFilter(QObject *obj, QEvent *event) } // 碰到 {t} 或 {c},直接删除 - QString varText = text.mid(cursor - 3, 3); - if(varText == "{t}" || varText == "{c}") { - ui->lineEditContent->setText(text.remove(cursor - 3, 3)); + auto datePatternPos = text.indexOf("{t}"); + auto counterPatternPos = text.indexOf("{c}"); + if(datePatternPos >= 0 || counterPatternPos >= 0) { + if(datePatternPos < cursor && cursor <= datePatternPos + 3) { + ui->lineEditContent->setText(text.remove(datePatternPos, 3)); + return true; + } + else if(counterPatternPos < cursor && cursor <= counterPatternPos + 3) { + ui->lineEditContent->setText(text.remove(counterPatternPos, 3)); + return true; + } } } } @@ -342,3 +444,123 @@ void BarcodeEditor::onContentChanged(QString content) m_vm.contentPattern = content; } + +void BarcodeViewModel::saveToXml(const BarcodeViewModel &vm, QXmlStreamAttributes &attrs) +{ + attrs.append("barcodeContentPattern", vm.contentPattern); + attrs.append("barcodeType", QString::number(int(vm.type))); + + if(vm.type == BARCODE_TYPE_BARCODE) { + DlgBarcodeFormatVM barcodeFormat = vm.format.value(); + attrs.append("barcodeFormat", barcodeFormat.type); + attrs.append("barcodeHeight", QString::number(barcodeFormat.height)); + attrs.append("barcodeWidth", QString::number(barcodeFormat.width)); + attrs.append("barcodeScale", QString::number(barcodeFormat.scale)); + attrs.append("barcodeInkType", QString::number(int(barcodeFormat.inkType))); + attrs.append("barcodeTxtVisible", barcodeFormat.txtVisible ? "true" : "false"); + } + else { + DlgQrcodeFormatVM qrcodeFormat = vm.format.value(); + attrs.append("qrcodeFormat", QString::number(qrcodeFormat.type)); + attrs.append("qrcodeSize", QString::number(qrcodeFormat.size)); + attrs.append("qrcodeLevel", QString::number(int(qrcodeFormat.level))); + attrs.append("qrcodeInkType", QString::number(int(qrcodeFormat.inkType))); + } + + if(vm.contentPattern.contains("{t}")) { + DateItemModel::saveToXml(vm.dateViewModel, attrs); + } + + if(vm.contentPattern.contains("{c}")) { + attrs.append("counterType", QString::number(vm.counterViewModel.counterType)); + attrs.append("counterDigitalNum", QString::number(vm.counterViewModel.digitalNum)); + } +} + +BarcodeViewModel BarcodeViewModel::loadFromXml(const QXmlStreamAttributes &attrs) +{ + BarcodeViewModel vm; + vm.contentPattern = attrs.value("barcodeContentPattern").toString(); + vm.type = static_cast(attrs.value("barcodeType").toInt()); + if(vm.type == BARCODE_TYPE_BARCODE) { + DlgBarcodeFormatVM barcodeFormat; + barcodeFormat.type = attrs.value("barcodeFormat").toString(); + barcodeFormat.height = attrs.value("barcodeHeight").toInt(); + barcodeFormat.width = attrs.value("barcodeWidth").toInt(); + barcodeFormat.scale = attrs.value("barcodeScale").toInt(); + barcodeFormat.inkType = static_cast(attrs.value("barcodeInkType").toInt()); + barcodeFormat.txtVisible = attrs.value("barcodeTxtVisible").toString() == "true"; + vm.format.setValue(barcodeFormat); + } + else { + DlgQrcodeFormatVM qrcodeFormat; + qrcodeFormat.type = static_cast(attrs.value("qrcodeFormat").toInt()); + qrcodeFormat.size = static_cast(attrs.value("qrcodeSize").toInt()); + qrcodeFormat.level = static_cast(attrs.value("qrcodeLevel").toInt()); + qrcodeFormat.inkType = static_cast(attrs.value("qrcodeInkType").toInt()); + vm.format.setValue(qrcodeFormat); + } + + if(vm.contentPattern.contains("{t}")) { + DateItemModel::loadFromXml(vm.dateViewModel, attrs); + } + + if(vm.contentPattern.contains("{c}")) { + vm.counterViewModel.counterType = static_cast(attrs.value("counterType").toInt()); + vm.counterViewModel.digitalNum = attrs.value("counterDigitalNum").toInt(); + } + + return vm; +} + + +QString BarcodeViewModel::toString(const BarcodeViewModel &vm) +{ + QString str; + str += QString("type: %1\r\n").arg(int(vm.type)); + str += QString("contentPattern: \"%1\"\r\n").arg(vm.contentPattern); + + // counterViewModel + str += QString("counterViewModel: \r\n"); + str += QString("\t counter type: %1\r\n").arg(vm.counterViewModel.counterType); + str += QString("\t digital number: %1\r\n").arg(vm.counterViewModel.digitalNum); + str += QString("\t letter space: %1\r\n").arg(vm.counterViewModel.letterSpace); + + // dateViewModel + str += QString("dateViewModel: \r\n"); + str += QString("\t pattern: \"%1\"\r\n").arg(vm.dateViewModel.datetimePattern); + + int expirationValue = 0; + int expirationType = 0; + if(vm.dateViewModel.daysOffset > 0) { + expirationValue = vm.dateViewModel.daysOffset; + expirationType = EXPIRATION_TYPE_DAY; + } + else if(vm.dateViewModel.monthsOffset > 0) { + expirationValue = vm.dateViewModel.monthsOffset; + expirationType = EXPIRATION_TYPE_MONTH; + } + str += QString("\t expirationValue: %1\r\n").arg(expirationValue); + str += QString("\t expirationType: %1\r\n").arg(expirationType); + + // format + str += QString("format: \n"); + if(vm.type == BARCODE_TYPE_BARCODE) { + DlgBarcodeFormatVM barcodeFormat = vm.format.value(); + str += QString("\t type: \"%1\"\r\n").arg(barcodeFormat.type); + str += QString("\t height: %1\r\n").arg(barcodeFormat.height); + str += QString("\t width: %1\r\n").arg(barcodeFormat.width); + str += QString("\t scale: %1\r\n").arg(barcodeFormat.scale); + str += QString("\t inkType: %1\r\n").arg(int(barcodeFormat.inkType)); + str += QString("\t txtVisible: %1\r\n").arg(barcodeFormat.txtVisible ? "true" : "false"); + } + else { + DlgQrcodeFormatVM qrcodeFormat = vm.format.value(); + str += QString("\t type: %1\r\n").arg(int(qrcodeFormat.type)); + str += QString("\t size: %1\r\n").arg(int(qrcodeFormat.size)); + str += QString("\t level: %1\r\n").arg(int(qrcodeFormat.level)); + str += QString("\t inkType: %1\r\n").arg(int(qrcodeFormat.inkType)); + } + + return str; +} diff --git a/scene/BarcodeEditor.h b/scene/BarcodeEditor.h index 533f549..5956383 100644 --- a/scene/BarcodeEditor.h +++ b/scene/BarcodeEditor.h @@ -8,6 +8,7 @@ #include "dlgQrcodeFormat.h" #include "DlgBarcodeFormat.h" #include +#include "ItemGeneralSettings.h" class DateFormatEditor; class DateReplaceEditor; @@ -25,11 +26,57 @@ enum BarcodeType { * 仅当 contentPattern 含有相应变量时,counterViewModel / dateViewModel 字段才有意义。 */ struct BarcodeViewModel { - QString contentPattern; // 条形码内容模版,例如 "ABC{t}{c1}" - CounterViewModel counterViewModel; // 计数器视图模型 - DateItemModel dateViewModel; // 日期视图模型 - BarcodeType type = BARCODE_TYPE_BARCODE; - QVariant format; + ItemGeneralSettingsVM generalSettingsVM; // 通用设置视图模型 + QString contentPattern; // 条形码内容模版,例如 "ABC{t}{c1}" + CounterViewModel counterViewModel; // 计数器视图模型 + DateItemModel dateViewModel; // 日期视图模型 + BarcodeType type = BARCODE_TYPE_BARCODE; // 条形码 或 二维码 + QVariant format; // 条形码/二维码 格式设置,如果是条形码,则实际类型为 DlgBarcodeFormatVM,如果是二维码,则实际类型为 DlgQrcodeFormatVM + + std::function imageGenerator; // 条形码/二维码 图片生成函数 + + /** + * @brief 将vm保存到xml属性集 + * + * @param vm 条码视图模型 + * @param attrs xml属性集 + */ + static void saveToXml(const BarcodeViewModel& vm, QXmlStreamAttributes& attrs); + + /** + * @brief 从xml属性集加载条码视图模型 + * + * @param attrs xml属性集 + * @return BarcodeViewModel 条码视图模型 + */ + static BarcodeViewModel loadFromXml(const QXmlStreamAttributes& attrs); + + /** + * @brief + * + * @param vm 条码视图模型 + * @return QString 字符串表示 + * + * @example + * type: 0 + * contentPattern: ABC{t}{c1} + * counterViewModel: + * \t counter type: 7 + * \t digital number: 2 + * \t letter space: 2 + * dateViewModel: + * \t pattern: "yyyy-MM-dd HH:mm:ss" + * \t expirationValue: 0 + * \t expirationType: 0 + * format: + * \t type: "BARCODE_128" + * \t height: 9 + * \t width: 36 + * \t scale: 1 + * \t inkType: 0 + * \t txtVisible: false + */ + static QString toString(const BarcodeViewModel& vm); }; Q_DECLARE_METATYPE(BarcodeViewModel); @@ -75,6 +122,10 @@ public: */ BarcodeViewModel viewModel(); + void restoreViewModel(); + + void applyCounterConfigToSysPara(); + private slots: /** @@ -126,6 +177,8 @@ private slots: */ void onQrcodeFormatConfirmed(); + void onTypeChanged(int i); + protected: virtual bool eventFilter(QObject* obj, QEvent* event) override; diff --git a/scene/BarcodeEditor.ui b/scene/BarcodeEditor.ui index a7d3e5b..f4253ff 100644 --- a/scene/BarcodeEditor.ui +++ b/scene/BarcodeEditor.ui @@ -126,9 +126,15 @@ QSpinBox::down-arrow { 520 540 101 - 50 + 40 + + + 100 + 40 + + ✓ @@ -139,9 +145,21 @@ QSpinBox::down-arrow { 640 540 101 - 50 + 40 + + + 0 + 0 + + + + + 100 + 40 + + ✕ diff --git a/scene/DlgBarcodeFormat.ui b/scene/DlgBarcodeFormat.ui index 2b6f339..5c0c1f6 100644 --- a/scene/DlgBarcodeFormat.ui +++ b/scene/DlgBarcodeFormat.ui @@ -257,15 +257,6 @@ - - BarCodeType - comboBoxInkColor - BarCodeHeigh - BarCodeDot - BarCodeScale - checkBoxAddText - checkBtn - @@ -280,7 +271,7 @@ 417 - 379 + 460 diff --git a/scene/DlgQrcodeFormat.cpp b/scene/DlgQrcodeFormat.cpp index e4b531a..52d22e5 100644 --- a/scene/DlgQrcodeFormat.cpp +++ b/scene/DlgQrcodeFormat.cpp @@ -6,6 +6,7 @@ DlgQrcodeFormat::DlgQrcodeFormat(QWidget *parent) : ui(new Ui::DlgQrcodeFormat) { ui->setupUi(this); + setViewModel(m_vm); } DlgQrcodeFormat::~DlgQrcodeFormat() diff --git a/scene/DlgQrcodeFormat.h b/scene/DlgQrcodeFormat.h index c028f22..6303d3d 100644 --- a/scene/DlgQrcodeFormat.h +++ b/scene/DlgQrcodeFormat.h @@ -31,7 +31,7 @@ enum QRCodeSize { }; struct DlgQrcodeFormatVM { - QRCodeType type = QR_CODE_TYPE_DATA_MATRIX; + QRCodeType type = QR_CODE_TYPE_QRCODE; QRCodeLevel level = QR_CODE_LEVEL_L; QRCodeSize size = QR_CODE_SIZE_DEFAULT; InkType inkType = INK_TYPE_BLACK; diff --git a/scene/ItemCommon.cpp b/scene/ItemCommon.cpp index 0769bc4..7f956fb 100644 --- a/scene/ItemCommon.cpp +++ b/scene/ItemCommon.cpp @@ -1,4 +1,312 @@ #include "ItemCommon.h" +#include "DlgQrcodeFormat.h" +#include "DlgBarcodeFormat.h" +#include +#include "Matrix/dm200.h" +#include "BarCode/barcode.h" +#include +#include + +/** + * @brief 将libqrencode的QRcode结构渲染成QImage + * + * 避免依赖文件系统或PostScript输出,直接在内存中生成可用于UI显示或打印的图像。 + * 使用2D像素数组而非向量,支持任意缩放因子。 + */ +static QImage renderQRCode(const QRcode *qrcode, int moduleSize = 4, QRgb foreground = 0xff000000, QRgb background = 0xffffffff) +{ + if (!qrcode || qrcode->width <= 0) { + return QImage(); + } + + int margin = 1; + int imageSize = (qrcode->width + margin * 2) * moduleSize; + QImage image(imageSize, imageSize, QImage::Format_ARGB32); + image.fill(background); + + const unsigned char *data = qrcode->data; + for (int y = 0; y < qrcode->width; ++y) { + for (int x = 0; x < qrcode->width; ++x) { + bool moduleOn = (data[y * qrcode->width + x] & 0x01) != 0; + QRgb color = moduleOn ? foreground : background; + int px = (margin + x) * moduleSize; + int py = (margin + y) * moduleSize; + for (int dy = 0; dy < moduleSize; ++dy) { + for (int dx = 0; dx < moduleSize; ++dx) { + image.setPixel(px + dx, py + dy, color); + } + } + } + } + + return image; +} + +/** + * @brief 将DataMatrix位图网格渲染成QImage + * + * iec16022ecc200返回原始位数组,需转换为可视化图像以供UI或打印使用。 + * 与renderQRCode采用相同的像素化策略,确保两种编码方式的输出一致性。 + */ +static QImage renderDataMatrix(const unsigned char *grid, int cols, int rows, int moduleSize = 1, QRgb foreground = 0xff000000, QRgb background = 0xffffffff) +{ + if (!grid || cols <= 0 || rows <= 0) { + return QImage(); + } + + int width = cols * moduleSize; + int height = rows * moduleSize; + QImage image(width, height, QImage::Format_ARGB32); + image.fill(background); + + for (int y = 0; y < rows; ++y) { + for (int x = 0; x < cols; ++x) { + bool bit = (grid[y * cols + x] & 0x01) != 0; + QRgb color = bit ? foreground : background; + int px = x * moduleSize; + int py = y * moduleSize; + for (int dy = 0; dy < moduleSize; ++dy) { + for (int dx = 0; dx < moduleSize; ++dx) { + image.setPixel(px + dx, py + dy, color); + } + } + } + } + + return image; +} + +static QRecLevel qrCodeLevelFromEnum(QRCodeLevel level) +{ + switch (level) { + case QR_CODE_LEVEL_M: return QR_ECLEVEL_M; + case QR_CODE_LEVEL_Q: return QR_ECLEVEL_Q; + case QR_CODE_LEVEL_H: return QR_ECLEVEL_H; + default: return QR_ECLEVEL_L; + } +} + +/** + * @brief 根据格式配置生成二维码或DataMatrix图像 + * + * 支持两种编码方式: + * - DataMatrix:适合小容量数据和有限空间环境(如工业标签) + * - QR Code:高容量、高可靠性,广泛应用于商业和物流 + * + * 直接在内存中渲染,避免对dlgQrCode或外部库的依赖。 + * 颜色反转机制(INK_TYPE_WHITE)用于支持黑底白码的特殊打印场景。 + */ +static QImage generateQRCodeImage(const QString &content, const DlgQrcodeFormatVM &vm) +{ + if (content.isEmpty()) { + return QImage(); + } + + QRecLevel level = qrCodeLevelFromEnum(vm.level); + + // 适配黑底白码场景(逆色):打印机某些模式下需要反转前景/背景色 + QRgb foreground = vm.inkType == INK_TYPE_WHITE ? 0x00ffffff : 0xff000000; + QRgb background = vm.inkType == INK_TYPE_WHITE ? 0xff000000 : 0x00ffffff; + + QByteArray bytes = content.toUtf8(); + + // DataMatrix:调用者指定尺寸约束(sizeType),库返回实际分配的网格 + if (vm.type == QR_CODE_TYPE_DATA_MATRIX) { + short cols = 0; + short rows = 0; + short sizeType = static_cast(vm.size); + // iec16022ecc200会根据sizeType调整输出尺寸,支持灵活的条码宽高比 + unsigned char *grid = iec16022ecc200(&cols, &rows, reinterpret_cast(bytes.data()), &sizeType); + if (!grid || cols <= 0 || rows <= 0) { + if (grid) { + free(grid); + } + return QImage(); + } + + QImage image = renderDataMatrix(grid, cols, rows, 1, foreground, background); + free(grid); + return image; + } + + // QR Code:版本0表示自动选择版本(1-40),确保内容总是被编码 + QRcode *qrcode = QRcode_encodeString(bytes.constData(), 0, level, QR_MODE_8, 1); + if (!qrcode) { + return QImage(); + } + + QImage image = renderQRCode(qrcode, 1, foreground, background); + QRcode_free(qrcode); + return image; +} + +/** + * @brief 将Barcode_Item的编码数据(partial)渲染成QImage + * + * partial字段存储压缩的条形码宽度数据(高4位=空白宽度,低3位=黑条宽度), + * 需展开为像素数组。barWidth参数控制每个模块的物理宽度(用于放大)。 + * + * 这种直接渲染方式避免了PostScript生成和文件I/O的开销。 + */ +static QImage renderBarcodeImage(const Barcode_Item *bc, int barHeight = 12, int barWidth = 1, QRgb foreground = 0xff000000, QRgb background = 0xffffffff) +{ + if (!bc || !bc->partial) { + return QImage(); + } + + // 约束:barHeight和barWidth必须为正值。默认值支持小尺寸标签的视觉清晰度 + if (barHeight <= 0) { + barHeight = 12; + } + if (barWidth <= 0) { + barWidth = 1; + } + + // xoffset=8提供左边距(4像素),用于对齐打印布局和改善美观度 + int xoffset = 8; + int len = static_cast(strlen(bc->partial)); + // 计算条形码总宽度:每字节的低4位表示条纹宽度单位数之和 + int bcWidth1 = 0; + for (int i = 0; i < len; ++i) { + bcWidth1 += (bc->partial[i] & 0x0f); + } + // 最终宽度 = 左边距 + 条纹单位总数 * 每单位像素数 + int imageWidth = (xoffset >> 1) + bcWidth1 * barWidth; + if (imageWidth <= 0 || barHeight <= 0) { + return QImage(); + } + + QImage image(imageWidth, barHeight, QImage::Format_ARGB32); + image.fill(background); + + for (int y = 0; y < barHeight; ++y) { + int xpos = xoffset >> 1; + for (int n = 0; n < len; ++n) { + // partial数据编码方案:奇数索引=黑条,偶数索引=空白 + // 低3位存储实际宽度,需乘以barWidth得到像素宽度 + int run = (bc->partial[n] & 0x07) * barWidth; + if (n & 1) { + // 奇数索引:绘制黑条(前景色) + for (int k = 0; k < run; ++k) { + if (xpos >= 0 && xpos < imageWidth) { + image.setPixel(xpos, y, foreground); + } + ++xpos; + } + } else { + // 偶数索引:跳过空白区域(已由背景色填充) + xpos += run; + } + } + } + + return image; +} + +static int barcodeTypeFromString(const QString &type) +{ + QString t = type.trimmed().toUpper(); + if (t == "BARCODE_128") return BARCODE_128; + if (t == "BARCODE_93") return BARCODE_93; + if (t == "BARCODE_ISBN") return BARCODE_ISBN; + if (t == "BARCODE_EAN") return BARCODE_EAN; + if (t == "BARCODE_UPC") return BARCODE_UPC; + if (t == "BARCODE_39") return BARCODE_39; + if (t == "BARCODE_CBR") return BARCODE_CBR; + if (t == "BARCODE_PLS") return BARCODE_PLS; + if (t == "BARCODE_MSI") return BARCODE_MSI; + return BARCODE_128; +} + +static QString barcodeTypeNameFromIndex(int index) +{ + switch (index) { + case 0: return QLatin1String("BARCODE_128"); + case 1: return QLatin1String("BARCODE_93"); + case 2: return QLatin1String("BARCODE_ISBN"); + case 3: return QLatin1String("BARCODE_EAN"); + case 4: return QLatin1String("BARCODE_UPC"); + case 5: return QLatin1String("BARCODE_39"); + case 6: return QLatin1String("BARCODE_CBR"); + case 7: return QLatin1String("BARCODE_PLS"); + case 8: return QLatin1String("BARCODE_MSI"); + default: return QLatin1String("BARCODE_128"); + } +} + +static QImage generateQRCodeImage(const QString &content, int qrType) +{ + DlgQrcodeFormatVM vm; + vm.type = qrType == 0 ? QR_CODE_TYPE_DATA_MATRIX : QR_CODE_TYPE_QRCODE; + return generateQRCodeImage(content, vm); +} + +/** + * @brief 根据格式配置生成条形码图像 + * + * 支持多种条形码标准(128、93、EAN等),直接渲染到QImage,无需文件操作。 + * 避免对QBarCode类的依赖,实现自包含的编码流程。 + */ +static QImage generateBarCodeImage(const QString &content, const DlgBarcodeFormatVM &vm) +{ + if (content.isEmpty()) { + return QImage(); + } + + // UTF-8编码确保国际字符被正确处理,与打印驱动兼容 + QByteArray bytes = content.toUtf8(); + + // Barcode_Create内部用strdup复制字符串,无需手动生命周期管理 + struct Barcode_Item *bc = Barcode_Create(bytes.data()); + if (!bc) { + return QImage(); + } + + int encodingFlag = barcodeTypeFromString(vm.type); + + // BARCODE_OUT_PS: 预期PostScript格式输出(internal flag),BARCODE_OUT_NOHEADERS: 不生成PS头 + int flags = encodingFlag | BARCODE_OUT_PS | BARCODE_OUT_NOHEADERS; + + // 传递缩放倍数到库,影响条纹宽度和字体大小的计算(510/60为库内部单位转换) + int width = qMax(1, vm.scale) * 510; + int height = qMax(1, vm.scale) * 60; + + if (Barcode_Position(bc, width, height, 0, 0, 0.0) < 0 || Barcode_Encode(bc, flags) < 0) { + Barcode_Delete(bc); + return QImage(); + } + + // 黑底白码支持(INK_TYPE_WHITE表示反向模式) + QRgb foreground = vm.inkType == INK_TYPE_WHITE ? 0x00ffffff : 0xff000000; + QRgb background = vm.inkType == INK_TYPE_WHITE ? 0xff000000 : 0x00ffffff; + QImage image = renderBarcodeImage(bc, vm.height, vm.width, foreground, background); + Barcode_Delete(bc); + + // 可选文本叠加:某些应用场景(如物流标签)需要条码旁显示人类可读的内容 + if (vm.txtVisible) { + QPainter painter(&image); + painter.setPen(foreground); + QFont font = painter.font(); + // 字体大小自适应:防止文本溢出图像,同时保持可读性 + font.setPixelSize(qMin(12, image.height())); + painter.setFont(font); + painter.drawText(image.rect().adjusted(1, 1, -1, -1), Qt::AlignBottom | Qt::AlignHCenter, content); + } + + // 最终放大:scale>1时对整个图像进行像素放大(用于低DPI打印环保模式) + if (vm.scale > 1) { + image = image.scaled(image.width() * vm.scale, image.height() * vm.scale, Qt::KeepAspectRatio, Qt::FastTransformation); + } + + return image; +} + +static QImage generateBarCodeImage(const QString &content, int barCodeType) +{ + DlgBarcodeFormatVM vm; + vm.type = barcodeTypeNameFromIndex(barCodeType); + return generateBarCodeImage(content, vm); +} QString generateTxtFromDateItemModel(const DateItemModel &model, const QDateTime &time) { @@ -73,7 +381,7 @@ QString generateTxtFromDateItemModel(const DateItemModel &model, const QDateTime if (result.contains(weekNumberPattern)) { result.replace(weekNumberPattern, QString::number(applyDateTime.date().weekNumber())); } - + return result; } @@ -87,12 +395,154 @@ QString generateTxtFromBarcodeViewModel(const BarcodeViewModel &vm, const std::a } pos = vm.contentPattern.indexOf("{c}"); - if(pos != 1) { + if(pos != -1) { auto cntValue = vm.counterViewModel.counterType == COUNTER_TYPE_1 ? counterValues[0] : counterValues[1]; auto valueStr = QString("%1").arg(cntValue, 10, QChar('0'));; - valueStr.right(vm.counterViewModel.digitalNum); + valueStr = valueStr.right(vm.counterViewModel.digitalNum); txt.replace(pos, 3, valueStr); } return txt; -} \ No newline at end of file +} + +/** + * @brief 统一的条码/二维码生成入口 + * + * @details + * 目的:将二维码和条形码编码逻辑独立出来,避免对UI对话框类(dlgQrCode、QBarCode)的依赖, + * 实现在数据层直接进行编码,支持后端打印任务、异步处理等场景。 + * + * 多态format参数设计的理由: + * - 支持便利调用(int):向后兼容现有代码路径,使用库默认配置 + * - 支持细粒度控制(DlgQrcodeFormatVM/DlgBarcodeFormatVM):UI配置直通生成函数 + * - 避免序列化开销:QVariant作为类型安全的通用容器 + * + * @param content 已格式化的文本内容(由调用者负责模板替换如{t}、{c}) + * @param type 条码类型(BARCODE_TYPE_QRCODE 或 BARCODE_TYPE_BARCODE) + * @param format 配置参数容器,支持以下类型: + * - BARCODE_TYPE_QRCODE: DlgQrcodeFormatVM(完整配置)或 int(0=DataMatrix, 1=QRCode,使用默认值) + * - BARCODE_TYPE_BARCODE: DlgBarcodeFormatVM(完整配置)或 int(条形码类型索引,使用默认值) + * @return QImage 生成的图像;失败返回空QImage + */ +QImage generateBarcodeImage(const QString &content, BarcodeType type, const QVariant &format) +{ + if (content.isEmpty()) { + return QImage(); + } + + if (type == BARCODE_TYPE_QRCODE) { + // 优先级:完整VM配置 > 简化int配置 > 默认配置 + // 原因:支持从UI直接传递结构体,同时保留向后兼容的快速路径 + if (format.canConvert()) { + DlgQrcodeFormatVM vm = format.value(); + return generateQRCodeImage(content, vm); + } + if (format.isValid() && format.canConvert()) { + return generateQRCodeImage(content, format.toInt()); + } + return generateQRCodeImage(content, static_cast(QR_CODE_TYPE_QRCODE)); + } + + if (type == BARCODE_TYPE_BARCODE) { + if (format.canConvert()) { + DlgBarcodeFormatVM vm = format.value(); + return generateBarCodeImage(content, vm); + } + if (format.isValid() && format.canConvert()) { + return generateBarCodeImage(content, format.toInt()); + } + return generateBarCodeImage(content, DlgBarcodeFormatVM()); + } + + return QImage(); +} + +/** + * @brief 将 QImage 中所有等于 bg 的边缘像素裁掉,仅保留有效内容的最小外接矩形 + * + * 复刻自 PicTextItem 的 clipImage:用四个方向扫描确定 left/top/right/bottom 边界, + * 然后调用 QImage::copy 输出裁剪后的图像。这样字符串如 "aaa" 不会保留 "j" 才会用到的下行空白, + * 节省后续打印或合成时的画布空间。 + */ +static QImage clipTxtImage(const QImage &img, QRgb bg) +{ + if (img.isNull()) { + return img; + } + + QRect clipRect; + for (int x = 0; x < img.width(); ++x) { + for (int y = 0; y < img.height(); ++y) { + if (img.pixel(x, y) != bg) { + clipRect.setLeft(x); + goto top; + } + } + } + // 整张图都是背景色,直接返回原图(无可裁剪内容) + return img; + +top: + for (int y = 0; y < img.height(); ++y) { + for (int x = 0; x < img.width(); ++x) { + if (img.pixel(x, y) != bg) { + clipRect.setTop(y); + goto right; + } + } + } + +right: + for (int x = img.width() - 1; x >= 0; --x) { + for (int y = 0; y < img.height(); ++y) { + if (img.pixel(x, y) != bg) { + clipRect.setRight(x + 1); + goto bottom; + } + } + } + +bottom: + for (int y = img.height() - 1; y >= 0; --y) { + for (int x = 0; x < img.width(); ++x) { + if (img.pixel(x, y) != bg) { + clipRect.setBottom(y + 1); + goto end; + } + } + } + +end: + return img.copy(clipRect); +} + +QImage txtToImage(const QString &txt, const QFont &font, const QColor &fgColor, const QColor &bgColor) +{ + if (txt.isEmpty()) { + return QImage(); + } + + // 用 QFontMetrics 计算给定字体下文本的水平推进宽度和单行高度, + // 这样初始画布刚好能容纳整段文本,避免后续裁剪时出现截断 + QFontMetrics fm(font); + int width = fm.horizontalAdvance(txt); + int height = fm.height(); + if (width <= 0 || height <= 0) { + return QImage(); + } + + QImage img(width, height, QImage::Format_ARGB32); + + QRgb bgRgb = bgColor.rgba(); + img.fill(bgRgb); + + QPainter painter; + painter.begin(&img); + painter.setFont(font); + painter.setPen(fgColor); + painter.drawText(img.rect(), txt); + painter.end(); + + // 按背景色裁剪,使输出图像紧贴文字像素的最小包围盒(详见函数注释) + return clipTxtImage(img, bgRgb); +} diff --git a/scene/ItemCommon.h b/scene/ItemCommon.h index 2978f71..6f81ab6 100644 --- a/scene/ItemCommon.h +++ b/scene/ItemCommon.h @@ -6,7 +6,26 @@ #include #include #include "BarcodeEditor.h" +#include +#include +/** + * @brief 根据日期视图模型和时间生成字符串 + * @param model 包含日期格式模版和相关配置的视图模型 + * @param time 用于生成字符串的时间 + * @return QString 生成的字符串 + * @remark + * 该函数根据 model.datetimePattern 中的格式模版生成字符串,支持以下格式: + * - yyyy: 四位数年份,支持替换为自定义字符串(通过 model.yearsMap) + * - YY: 两位数年份 + * - MM: 两位数月份,支持替换为自定义字符串(通过 model.monthsMap) + * - dd: 两位数日期,支持替换为自定义字符串(通过 model.daysMap) + * - HH: 两位数小时,支持替换为自定义字符串(通过 model.hoursMap) + * - mm: 两位数分钟 + * - ss: 两位数秒钟 + * - w: 星期几,支持替换为自定义字符串(通过 model.weeksMap) + * - c: 年中周数 + */ QString generateTxtFromDateItemModel(const DateItemModel& model, const QDateTime& time); /** @@ -28,4 +47,30 @@ QString generateTxtFromDateItemModel(const DateItemModel& model, const QDateTime */ QString generateTxtFromBarcodeViewModel(const BarcodeViewModel& vm, const std::array counterValues, const QDateTime& time); -#endif // _ITEM_COMMON_H_ \ No newline at end of file +/** + * @brief 根据条形码类型和内容生成条形码或二维码图像 + * @param content 已格式化的文本内容 + * @param type 条码类型 + * @param format 配置参数 + * @return QImage 生成的图像;如果失败返回空图像 + * @note + * format 参数类型: + * - BARCODE_TYPE_QRCODE: DlgQrcodeFormatVM 或 int + * - BARCODE_TYPE_BARCODE: DlgBarcodeFormatVM 或 int + * 如果 format 是 int 类型, 对于 QR Code,0 表示 Data Matrix,1 表示 QR Code;对于条形码,int 值对应 DlgBarcodeFormatVM 中 type 的索引。 + * 如果 format 是 int 类型,则使用默认配置并根据 int 值选择二维码或条形码的子类型;如果 format 是对应的 VM 类型,则使用其中的详细配置。 + */ +QImage generateBarcodeImage(const QString& content, BarcodeType type, const QVariant& format); + +/** + * @brief 将文本转换为图像 + * @param txt 要转换的文本 + * @param font 文本使用的字体 + * @param fgColor 文本颜色,默认为黑色 + * @param bgColor 背景颜色,默认为白色 + * @return QImage 转换后的图像 + * @note 返回的字符串图像会裁剪至最小边界以节省空间。例如字符串"aaa"的高度会比"bbbjjj"小,因为前者没有上下行部分。 + */ +QImage txtToImage(const QString& txt, const QFont& font, const QColor& fgColor = Qt::black, const QColor& bgColor = Qt::white); + +#endif // _ITEM_COMMON_H_ diff --git a/scene/ItemGeneralSettings.cpp b/scene/ItemGeneralSettings.cpp index 5fd6b0b..2764469 100644 --- a/scene/ItemGeneralSettings.cpp +++ b/scene/ItemGeneralSettings.cpp @@ -18,6 +18,14 @@ ItemGeneralSettings::ItemGeneralSettings(QWidget *parent) : connect(&m_directionButtonGroup, static_cast(&QButtonGroup::buttonClicked), this, &ItemGeneralSettings::ondirectionChanged); + connect(ui->boldSpinBox, static_cast(&QSpinBox::valueChanged), + this, &ItemGeneralSettings::onBoldSpinBoxValueChanged); + connect(ui->txtSpanSpinBox, static_cast(&QSpinBox::valueChanged), + this, &ItemGeneralSettings::onLetterSpaceSpinBoxChanged); + connect(ui->invertCheckBox, &QCheckBox::stateChanged, + this, [this](int state) { onColorReversalCheckBoxChecked(state == Qt::Checked); }); + + initUI(); } ItemGeneralSettings::~ItemGeneralSettings() @@ -28,35 +36,51 @@ ItemGeneralSettings::~ItemGeneralSettings() void ItemGeneralSettings::edit(PicTextItem *item) { m_currItem = item; - if(!m_currItem) { - ui->boldSpinBox->setValue(ui->boldSpinBox->minimum()); - ui->txtSpanSpinBox->setValue(ui->txtSpanSpinBox->minimum()); - ui->normalRBtn->setChecked(true); - ui->invertCheckBox->setChecked(false); - ui->previewWidget->setImg(QImage()); - return; + + // 从item快照创建ViewModel(如果item为空,使用默认值) + setViewModel(ItemGeneralSettingsVM::fromItem(item)); +} + +void ItemGeneralSettings::initUI() +{ + ui->densitySpinBox->setValue(0); + ui->invertCheckBox->setChecked(false); + ui->alternateCheckBox->setChecked(false); + ui->boldSpinBox->setValue(0); + ui->txtSpanSpinBox->setValue(0); + ui->normalRBtn->setChecked(true); + ui->applyCounterCheckBox->setChecked(false); + ui->counterIDSpinBox->setValue(0); +} + +void ItemGeneralSettings::setViewModel(const ItemGeneralSettingsVM &vm) +{ + m_vmSnapshot = vm; + m_vm = vm; + + // 阻止信号以避免重复回调 + auto blockBold = ui->boldSpinBox->blockSignals(true); + auto blockSpan = ui->txtSpanSpinBox->blockSignals(true); + auto blockInvert = ui->invertCheckBox->blockSignals(true); + + // 根据m_vm更新UI显示 + ui->boldSpinBox->setValue(m_vm.boldMultiple); + ui->txtSpanSpinBox->setValue(m_vm.letterSpace); + + auto dirBtn = m_directionButtonGroup.button(m_vm.direction); + if (dirBtn) { + dirBtn->setChecked(true); } - - auto b = ui->boldSpinBox->blockSignals(true); - ui->boldSpinBox->setValue(item->boldMultiple()); - ui->boldSpinBox->blockSignals(b); - - b = ui->txtSpanSpinBox->blockSignals(true); - ui->txtSpanSpinBox->setValue(item->letterSpace()); - ui->txtSpanSpinBox->blockSignals(b); - - auto dirBtn = m_directionButtonGroup.button(item->direction()); - b = dirBtn->blockSignals(true); - dirBtn->setChecked(true); - dirBtn->blockSignals(b); - - b = ui->invertCheckBox->blockSignals(true); - ui->invertCheckBox->setChecked(item->colorReversal()); - ui->invertCheckBox->blockSignals(b); - - // 文字、日期、轮班可调字符间距 - // 计数器类的字符间距由 @see CounterVarSet 单独调整 - switch(item->sourceType()) { + + ui->invertCheckBox->setChecked(m_vm.colorReversal); + + // 恢复信号 + ui->boldSpinBox->blockSignals(blockBold); + ui->txtSpanSpinBox->blockSignals(blockSpan); + ui->invertCheckBox->blockSignals(blockInvert); + + // 字间距可见性由item的类型决定 + switch(m_vm.sourceType) { case SourceType::TEXT: case SourceType::DATETIME: case SourceType::SCHEDULE_SHIFT: @@ -67,44 +91,84 @@ void ItemGeneralSettings::edit(PicTextItem *item) ui->letterSpacePanel->setVisible(false); break; } + + updatePreview(); +} - ui->previewWidget->setImg(m_currItem->preview()); +void ItemGeneralSettings::applyToItem(PicTextItem *item) +{ + if (!item) { + return; + } + + // VM的属性被逐一应用到item + item->setDirection(m_vm.direction); + item->setBoldMultiple(m_vm.boldMultiple); + item->setLetterSpace(m_vm.letterSpace); + item->setColorReversal(m_vm.colorReversal); + item->applyModify(); } void ItemGeneralSettings::ondirectionChanged(int dir) { - if(!m_currItem) { - return; - } - - m_currItem->setDirection(ItemDirectionType(dir)); - m_currItem->applyModify(); - ui->previewWidget->setImg(m_currItem->preview()); + // 只更新VM,不直接修改item + m_vm.direction = ItemDirectionType(dir); + updatePreview(); } void ItemGeneralSettings::onBoldSpinBoxValueChanged(int multiple) { - if(m_currItem) { - m_currItem->setBoldMultiple(multiple); - m_currItem->applyModify(); - ui->previewWidget->setImg(m_currItem->preview()); - } + // 只更新VM + m_vm.boldMultiple = multiple; + updatePreview(); } void ItemGeneralSettings::onLetterSpaceSpinBoxChanged(int space) { - if(m_currItem) { - m_currItem->setLetterSpace(space); - m_currItem->applyModify(); - ui->previewWidget->setImg(m_currItem->preview()); - } + // 只更新VM + m_vm.letterSpace = space; + updatePreview(); } void ItemGeneralSettings::onColorReversalCheckBoxChecked(bool b) { - if(m_currItem) { - m_currItem->setColorReversal(b); - m_currItem->applyModify(); - ui->previewWidget->setImg(m_currItem->preview()); - } + // 只更新VM + m_vm.colorReversal = b; + updatePreview(); } + +void ItemGeneralSettings::updatePreview() +{ + // 预览需要基于item的source和m_vm的属性组合渲染 + // 如果m_currItem为空,显示空图像 + if (!m_currItem) { + if(m_vm.imageGenerator) { + ui->previewWidget->setImg(m_vm.imageGenerator()); + } + else { + ui->previewWidget->setImg(QImage()); + } + return; + } + + // 临时应用VM到item以获取预览,随后还原 + auto backupDir = m_currItem->direction(); + auto backupBold = m_currItem->boldMultiple(); + auto backupSpace = m_currItem->letterSpace(); + auto backupReverse = m_currItem->colorReversal(); + + m_currItem->setDirection(m_vm.direction); + m_currItem->setBoldMultiple(m_vm.boldMultiple); + m_currItem->setLetterSpace(m_vm.letterSpace); + m_currItem->setColorReversal(m_vm.colorReversal); + m_currItem->applyModify(); + + ui->previewWidget->setImg(m_currItem->preview()); + + // 还原原始状态(preview()后item的属性不应该被留下改动) + m_currItem->setDirection(backupDir); + m_currItem->setBoldMultiple(backupBold); + m_currItem->setLetterSpace(backupSpace); + m_currItem->setColorReversal(backupReverse); + m_currItem->applyModify(); +} \ No newline at end of file diff --git a/scene/ItemGeneralSettings.h b/scene/ItemGeneralSettings.h index 44e76ea..68abf24 100644 --- a/scene/ItemGeneralSettings.h +++ b/scene/ItemGeneralSettings.h @@ -5,11 +5,52 @@ #include #include "pictextitem.h" #include +#include namespace Ui { class ItemGeneralSettings; } +/** + * @brief 图元通用属性的ViewModel + * + * 目的:解耦UI编辑器与PicTextItem,支持灵活的数据绑定和批量操作。 + * UI修改属性时先更新VM,再决定何时应用到item(实时或延迟)。 + */ +struct ItemGeneralSettingsVM { + // 图元类型,用于判断是否显示字间距 + SourceType sourceType = SourceType::UNKNOWN; + + ItemDirectionType direction = NORMAL; + int boldMultiple = 1; + int letterSpace = 0; + bool colorReversal = false; + + std::function imageGenerator; // 图片生成函数 + + // 便利方法:从PicTextItem快照创建VM + static ItemGeneralSettingsVM fromItem(PicTextItem *item) { + ItemGeneralSettingsVM vm; + if (item) { + vm.sourceType = item->sourceType(); + vm.direction = item->direction(); + vm.boldMultiple = item->boldMultiple(); + vm.letterSpace = item->letterSpace(); + vm.colorReversal = item->colorReversal(); + } + return vm; + } + + // 检查是否有改动 + bool hasDifference(const ItemGeneralSettingsVM &other) const { + return sourceType != other.sourceType || + direction != other.direction || + boldMultiple != other.boldMultiple || + letterSpace != other.letterSpace || + colorReversal != other.colorReversal; + } +}; + class ItemGeneralSettings : public QWidget { Q_OBJECT @@ -18,10 +59,45 @@ public: explicit ItemGeneralSettings(QWidget *parent = nullptr); ~ItemGeneralSettings(); + /** + * @brief 加载PicTextItem的属性到ViewModel,初始化UI + * + * 原因:UI应该显示item的状态,但不应该直接持有指针长期修改。 + * edit()后,用户对UI的编辑会更新m_vm,而不是直接改item。 + */ void edit(PicTextItem* item); + /** + * @brief 设置当前ViewModel + * + * @param vm + */ + void setViewModel(const ItemGeneralSettingsVM& vm); + + /** + * @brief 获取当前ViewModel + * + * 调用者可以检查是否有改动,并决定是否应用 + */ + ItemGeneralSettingsVM viewModel() const { return m_vm; } + + /** + * @brief 将ViewModel的属性应用到指定的PicTextItem + * + * 解耦的核心:UI不再直接修改item,而是通过VM进行间接修改。 + * 这支持撤销/重做、批量编辑等高级功能。 + */ + void applyToItem(PicTextItem* item); + + /** + * @brief 当前编辑的item源引用(可能为空) + * + * 主要用于获取preview()时作为示例源,不用于直接修改 + */ PicTextItem* currentItem() { return m_currItem; } + void initUI(); + private slots: void ondirectionChanged(int dir); void onBoldSpinBoxValueChanged(int multiple); @@ -29,10 +105,23 @@ private slots: void onColorReversalCheckBoxChecked(bool b); private: + /** + * @brief 刷新预览,基于当前VM和item的source渲染 + */ + void updatePreview(); + Ui::ItemGeneralSettings *ui; QButtonGroup m_directionButtonGroup; + // 原始item的快照,用于preview()和后续应用 PicTextItem* m_currItem = nullptr; + + // UI编辑的状态,独立于m_currItem + ItemGeneralSettingsVM m_vm; + + // 初始加载时的VM状态,用于检测改动 + ItemGeneralSettingsVM m_vmSnapshot; + QPainter m_painter; }; diff --git a/scene/PicDateItem.cpp b/scene/PicDateItem.cpp index d82b642..c11dbdf 100644 --- a/scene/PicDateItem.cpp +++ b/scene/PicDateItem.cpp @@ -12,7 +12,7 @@ PicDateItem::PicDateItem(QGraphicsItem *parent, QGraphicsScene *scene, const Sou updateDatetimeStr(); }); - m_timer.start(); + // m_timer.start(); } QVariant PicDateItem::source() @@ -70,48 +70,13 @@ void PicDateItem::setCustomAttrs(const QXmlStreamAttributes &attrs) // yearsMap = "20232023年
20242024年
20252025年" auto m = DateItemModel(); - m.dataMap = attrs.value("dataMap").toString().split("
"); - m.daysMap = attrs.value("daysMap").toString().split("
"); - m.hoursMap = attrs.value("hoursMap").toString().split("
"); - m.monthsMap = attrs.value("monthsMap").toString().split("
"); - m.weeksMap = attrs.value("weeksMap").toString().split("
"); - - auto yearsMap = attrs.value("yearsMap").toString().split("
"); - for(auto it = yearsMap.begin(); it != yearsMap.end(); ++it) { - auto yearPair = it->split(""); - if(yearPair.size() == 2) { - m.yearsMap[yearPair[0].toInt()] = yearPair[1]; - } - } - - m.monthsOffset = attrs.value("monthsOffset").toInt(); - m.daysOffset = attrs.value("daysOffset").toInt(); - m.datetimePattern = attrs.value("datetimePattern").toString(); + DateItemModel::loadFromXml(m, attrs); setModel(std::move(m)); } void PicDateItem::saveCustomAttrs(QXmlStreamAttributes &attrs) { - auto dataMap = m_model.dataMap.join("
"); - auto daysMap = m_model.daysMap.join("
"); - auto hoursMap = m_model.hoursMap.join("
"); - auto monthsMap = m_model.monthsMap.join("
"); - auto weeksMap = m_model.weeksMap.join("
"); - - QString yearsMap; - for(auto it = m_model.yearsMap.begin(); it != m_model.yearsMap.end(); ++it) { - yearsMap.append(QString("%1%2
").arg(it.key()).arg(it.value())); - } - - attrs.append("dataMap", dataMap); - attrs.append("daysMap", daysMap); - attrs.append("hoursMap", hoursMap); - attrs.append("monthsMap", monthsMap); - attrs.append("weeksMap", weeksMap); - attrs.append("yearsMap", yearsMap); - attrs.append("datetimePattern", m_model.datetimePattern); - attrs.append("monthsOffset", QString::number(m_model.monthsOffset)); - attrs.append("daysOffset", QString::number(m_model.daysOffset)); + DateItemModel::saveToXml(m_model, attrs); } QImage PicDateItem::itemImage() diff --git a/scene/PicScheduleShiftItem.cpp b/scene/PicScheduleShiftItem.cpp index 3d69432..adcdf29 100644 --- a/scene/PicScheduleShiftItem.cpp +++ b/scene/PicScheduleShiftItem.cpp @@ -9,7 +9,7 @@ PicScheduleShiftItem::PicScheduleShiftItem(QGraphicsItem *parent, QGraphicsScene connect(&m_updateTimer, &QTimer::timeout, [this](){ updateScheduleName(); }); - m_updateTimer.start(); + // m_updateTimer.start(); } QVariant PicScheduleShiftItem::source() diff --git a/scene/ScheduleShiftsEditor.cpp b/scene/ScheduleShiftsEditor.cpp index 61a602f..46f51e1 100644 --- a/scene/ScheduleShiftsEditor.cpp +++ b/scene/ScheduleShiftsEditor.cpp @@ -44,6 +44,7 @@ ScheduleShiftsEditor::ScheduleShiftsEditor(QWidget *parent) : ui->btnAdd->setEnabled(false); ui->btnRemove->setEnabled(false); + applyStyleSheet(); } ScheduleShiftsEditor::~ScheduleShiftsEditor() @@ -162,7 +163,101 @@ void ScheduleShiftsEditor::applyDataModel() void ScheduleShiftsEditor::applyStyleSheet() { - // TODO:: 应用样式表 + QString styleSheet = + R"( + /* + QPushButton { + background-color: #5396C1; + color: #ffffff; + border: 1px solid #000000; + border-radius: 3px; + font-size: 18px; + font-weight:500; + width: 180px; + height: 90px; + } + + QPushButton:hover { + background-color: #5396C1; + } + + QPushButton:disabled { + background-color: #7C828E; + color: #606060; + border-color: #808080; + } + */ + + QPushButton#closeBtn, QPushButton#checkBtn{ + background-color: #E6F7FF; + border: 1px solid #87CEEB; + border-radius: 4px; + font-size: 24px; + color: #228B22; + } + QPushButton#closeBtn:hover,QPushButton#checkBtn:hover{ + background-color: #D1E9FF; + } + + QPushButton#closeBtn:pressed,QPushButton#checkBtn:pressed{ + background-color: #BAE7FF; + } + + QPushButton { + background-color: #5396C1; + color: #ffffff; + border: 1px solid #000000; + border-radius: 3px; + font-size: 18px; + font-weight:500; + width: 100px; + height: 50px; + } + + QPushButton:hover { + background-color: #5396C1; + } + + QPushButton:disabled { + background-color: #7C828E; + color: #606060; + border-color: #808080; + } + + QTabWidget::pane { + border: 1px solid #dddddd; + background-color: #ffffff; + } + + QTabBar::tab:focus { + outline: none; + } + + QTabBar::tab { + min-width: 90px; + min-height: 45px; + padding: 4px 10px; + margin-right: 4px; + border: 1px solid #dddddd; + border-bottom: none; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + background-color: #5396C1; + color: #ffffff; + } + + QTabWidget::tab-bar { + top: -3px; + left: 10px; + } + + QTabBar::tab:selected { + background-color: #6bb1e0; + color: #ffffff; + box-shadow: 0 -3px 8px rgba(44, 125, 232, 0.25); + } + )"; + this->setStyleSheet(styleSheet); } SelectedStyleTimeEdit::SelectedStyleTimeEdit(QWidget *parent) diff --git a/scene/ScheduleShiftsEditor.ui b/scene/ScheduleShiftsEditor.ui index 5318b43..ef3c0bf 100644 --- a/scene/ScheduleShiftsEditor.ui +++ b/scene/ScheduleShiftsEditor.ui @@ -149,26 +149,7 @@
- QPushButton { - background-color: #5396C1; - color: #ffffff; - border: 1px solid #000000; - border-radius: 3px; - font-size: 18px; - font-weight:500; - width: 180px; - height: 90px; - } - - QPushButton:hover { - background-color: #5396C1; - } - - QPushButton:disabled { - background-color: #7C828E; - color: #606060; - border-color: #808080; - } + 班时编号 diff --git a/scene/ViewModels.cpp b/scene/ViewModels.cpp index d62b2a5..866e6f0 100644 --- a/scene/ViewModels.cpp +++ b/scene/ViewModels.cpp @@ -1,4 +1,5 @@ #include "ViewModels.h" +#include DateItemModel DateItemModel::createDefaultReplaceModel() { @@ -28,3 +29,81 @@ DateItemModel DateItemModel::createDefaultReplaceModel() return model; } + +void DateItemModel::loadFromXml(DateItemModel &vm, const QXmlStreamAttributes &attrs) +{ + auto& m = vm; + m.dataMap = attrs.value("dataMap").toString().split("
"); + m.daysMap = attrs.value("daysMap").toString().split("
"); + m.hoursMap = attrs.value("hoursMap").toString().split("
"); + m.monthsMap = attrs.value("monthsMap").toString().split("
"); + m.weeksMap = attrs.value("weeksMap").toString().split("
"); + + auto yearsMap = attrs.value("yearsMap").toString().split("
"); + for(auto it = yearsMap.begin(); it != yearsMap.end(); ++it) { + auto yearPair = it->split(""); + if(yearPair.size() == 2) { + m.yearsMap[yearPair[0].toInt()] = yearPair[1]; + } + } + + m.monthsOffset = attrs.value("monthsOffset").toInt(); + m.daysOffset = attrs.value("daysOffset").toInt(); + m.datetimePattern = attrs.value("datetimePattern").toString(); +} + +void DateItemModel::saveToXml(const DateItemModel &vm, QXmlStreamAttributes &attrs) +{ + auto& m = vm; + auto dataMap = m.dataMap.join("
"); + auto daysMap = m.daysMap.join("
"); + auto hoursMap = m.hoursMap.join("
"); + auto monthsMap = m.monthsMap.join("
"); + auto weeksMap = m.weeksMap.join("
"); + + QString yearsMap; + for(auto it = m.yearsMap.begin(); it != m.yearsMap.end(); ++it) { + yearsMap.append(QString("%1%2
").arg(it.key()).arg(it.value())); + } + + attrs.append("dataMap", dataMap); + attrs.append("daysMap", daysMap); + attrs.append("hoursMap", hoursMap); + attrs.append("monthsMap", monthsMap); + attrs.append("weeksMap", weeksMap); + attrs.append("yearsMap", yearsMap); + attrs.append("datetimePattern", m.datetimePattern); + attrs.append("monthsOffset", QString::number(m.monthsOffset)); + attrs.append("daysOffset", QString::number(m.daysOffset)); +} + +void CounterViewModel::loadFromXml(CounterViewModel &vm, const QXmlStreamAttributes &attrs) +{ + auto typeRef = attrs.value("counter_type"); + auto digitalNumRef = attrs.value("digital_num"); + + bool ok = false; + int counterType = typeRef.toInt(&ok); + if(!ok || (counterType != COUNTER_TYPE_1 && COUNTER_TYPE_2 != counterType)) { + qWarning() << "Invalied counter type: " << counterType; + return; + } + + ok = false; + int digitalNum = digitalNumRef.toInt(&ok); + if(!ok || digitalNum <= 0) { + qWarning() << "Invalied counter digital number: " << digitalNum; + return; + } + + vm.counterType = static_cast(counterType); + vm.digitalNum = digitalNum; + qInfo() << "Loaded attrs from xml: " << " counter type: " << counterType << ", digitalNum: " << digitalNum; +} + +void CounterViewModel::saveToXml(CounterViewModel &vm, QXmlStreamAttributes &attrs) +{ + attrs.append("counter_type", QString::number(vm.counterType)); + attrs.append("digital_num", QString::number(vm.digitalNum)); + qInfo() << "Set attrs to xml: " << " counter type: " << vm.counterType << ", digitalNum: " << vm.digitalNum; +} diff --git a/scene/ViewModels.h b/scene/ViewModels.h index 3ea132c..0daf3e3 100644 --- a/scene/ViewModels.h +++ b/scene/ViewModels.h @@ -7,6 +7,7 @@ #include #include "SysPara.h" #include +#include enum InkType { INK_TYPE_BLACK, @@ -32,6 +33,9 @@ struct CounterViewModel { int letterSpace = 2; int charWidth = 0; // 字符宽度,仅在 enbCustomCharWidth == true 时有意义 bool enbCustomCharWidth = false; + + static void loadFromXml(CounterViewModel& vm, const QXmlStreamAttributes& attrs); + static void saveToXml(CounterViewModel& vm, QXmlStreamAttributes& attrs); }; Q_DECLARE_METATYPE(CounterViewModel); @@ -52,6 +56,8 @@ struct DateItemModel { QStringList hoursMap; static DateItemModel createDefaultReplaceModel(); + static void loadFromXml(DateItemModel& vm, const QXmlStreamAttributes& attrs); + static void saveToXml(const DateItemModel& vm, QXmlStreamAttributes& attrs); }; Q_DECLARE_METATYPE(DateItemModel); diff --git a/scene/piccodeitem.cpp b/scene/piccodeitem.cpp index ef23bff..576b279 100644 --- a/scene/piccodeitem.cpp +++ b/scene/piccodeitem.cpp @@ -1,38 +1,82 @@ #include "piccodeitem.h" - - +#include "ItemCommon.h" +#include PicCodeItem::PicCodeItem(QGraphicsItem *parent, QGraphicsScene *scene, const SourceType type) - :PicTextItem(parent, scene, type) + :PicTextItem(parent, scene, type), + m_currCounterValues({0, 0}) { setFlag(QGraphicsItem::ItemIsMovable); setFlag(QGraphicsItem::ItemIsSelectable); setFlag(QGraphicsItem::ItemIsFocusable); setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); + + connect(&m_dateVarTimer, &QTimer::timeout, this, [this](){ + updateVariants(); + }); + + // m_dateVarTimer.start(50); +} + +PicCodeItem::~PicCodeItem() +{ + m_dateVarTimer.stop(); } QVariant PicCodeItem::source() { - return imagePath; + return m_currCodeTxt; } void PicCodeItem::setSource(QVariant var) { - imagePath = var.toString(); applyModify(); } +void PicCodeItem::setBarcodeViewModel(const BarcodeViewModel &vm) +{ + m_vm = vm; + m_currCodeTxt = ""; + updateVariants(); + qInfo() << "Barcode model: \r\n" << qPrintable(BarcodeViewModel::toString(vm)); +} + +BarcodeViewModel PicCodeItem::barcodeViewModel() +{ + return m_vm; +} + +bool PicCodeItem::updateVariants(const QVector counters) +{ + m_currCounterValues = counters; + return updateVariants(); +} + QImage PicCodeItem::itemImage() { - return QImage(imagePath); + return m_codeImage; } void PicCodeItem::setCustomAttrs(const QXmlStreamAttributes &attrs) { - imagePath = attrs.value("CodeImage").toString(); + auto vm = BarcodeViewModel::loadFromXml(attrs); + setBarcodeViewModel(vm); } void PicCodeItem::saveCustomAttrs(QXmlStreamAttributes &attrs) { - attrs.append("CodeImage", imagePath); + BarcodeViewModel::saveToXml(m_vm, attrs); +} + +bool PicCodeItem::updateVariants() +{ + auto txt = generateTxtFromBarcodeViewModel(m_vm, {m_currCounterValues[0], m_currCounterValues[1]}, QDateTime::currentDateTime()); + if(txt != m_currCodeTxt || m_currCodeTxt.isEmpty()) { + m_currCodeTxt = txt; + m_codeImage = generateBarcodeImage(txt, m_vm.type, m_vm.format); + applyModify(); + return true; + } + + return false; } diff --git a/scene/piccodeitem.h b/scene/piccodeitem.h index 3b9f20c..434ce3e 100644 --- a/scene/piccodeitem.h +++ b/scene/piccodeitem.h @@ -2,19 +2,24 @@ #define PICCODEITEM_H #include "pictextitem.h" - - +#include "BarcodeEditor.h" +#include class PicCodeItem : public PicTextItem { public: PicCodeItem(QGraphicsItem *parent = 0, QGraphicsScene *scene = 0, const SourceType type = SourceType::CODE); - virtual ~PicCodeItem() {} + virtual ~PicCodeItem(); virtual QVariant source() override; virtual void setSource(QVariant var) override; + void setBarcodeViewModel(const BarcodeViewModel& vm); + BarcodeViewModel barcodeViewModel(); + + bool updateVariants(const QVector counters); + protected: /** * @brief itemImage 子类可以重新实现该方法用于返回已经渲染好了的但未应用方向、水平拉伸的图像 @@ -29,9 +34,14 @@ protected: virtual void saveCustomAttrs(QXmlStreamAttributes& attrs); private: - // 保存图片的绝对路径 - QString imagePath = ""; + bool updateVariants(); + + BarcodeViewModel m_vm; + QVector m_currCounterValues; + QString m_currCodeTxt; + QImage m_codeImage; + QTimer m_dateVarTimer; }; #endif // PICCODEITEM_H diff --git a/scene/picscene.cpp b/scene/picscene.cpp index 1f2ab19..43ce110 100644 --- a/scene/picscene.cpp +++ b/scene/picscene.cpp @@ -55,6 +55,7 @@ void PicScene::keyPressEvent(QKeyEvent *event) { QGraphicsScene::keyPressEvent(event); } + //edit@12-09 void PicScene::drawBackground(QPainter *painter, const QRectF &rect) { @@ -112,6 +113,7 @@ void PicScene::drawBackground(QPainter *painter, const QRectF &rect) emit showTextWidthHeight(); } + //edit@12-09 void PicScene::setIsdrawBackground(bool newIsdrawBackground) { diff --git a/scene/picscene.h b/scene/picscene.h index 4718a22..cc3bd99 100644 --- a/scene/picscene.h +++ b/scene/picscene.h @@ -72,6 +72,6 @@ private: bool IsdrawBackground; - QGraphicsObject* currFocusItem; + QGraphicsObject* currFocusItem = nullptr; }; #endif // PICSCENE_H diff --git a/spanish.ts b/spanish.ts index 955903d..b308349 100644 --- a/spanish.ts +++ b/spanish.ts @@ -9,161 +9,151 @@ - + 整体设置 - + 变量类型 - - + + 计数器1 - - + + 计数器2 - + 数字个数: - + 1 - + 2 - + 3 - + 4 - + 5 - + 6 - + 7 - + 8 - - + + 字符间距 + + + + + + ← + + + + + + → + + + + + 增量值: - - + + 额外设置 + + + + + 如果预览与打印显示不正确,调整此设置可能恢复。 + + + + + 自定义字符宽度 + + + + + 当前值: - + 可变长度 - - + + 重复数: - + 小数点位数 - - - 重设值 - - - - - + + 结束值: - - + + 起始值: - - - 清零 - - - - - 代替 - - - - - 数据 - - - - - 下 - - - - - 预设值 - - - - - 上 - - - - - 类型 - - - - + ✓ - + ✕ @@ -176,198 +166,198 @@ - + ✓ - + ✕ - + 整体设置 - + 日期/时间 - + 内容 - + 有效期限 - - + + 天数 - + 月 - 精确到日 - + 月 - 精确到月 - + . - + : - + , - + / - + ; - + _ - - + + - - - + + 小时 - + 分钟 - + 秒钟 - - + + 月 - + 年2026 - + 日 - + 年中第几周 - + 年26 - - + + 周几 - + 空格 - + <------ - + + - - + + 代替 - + 名称 - + 数据 - + 年 - + Meridiem - + 类型 - + 上 - + 下 - + 预设值 - + 高级选项 @@ -757,12 +747,12 @@ - + 警告 - + U盘未插入或U盘根目录下的doc文件夹不存在! @@ -770,75 +760,80 @@ DigitalInput - + Form - + 9 - + 3 - + 8 - + - - + 退格 - + 1 - + 4 - + 0 - + + 清零 + + + + + Enter + + + + 5 - + 7 - + 2 - + 6 - - - 全选 - - DlgInputAddr @@ -1190,22 +1185,22 @@ - + 系统 - + U盘 - + ✓ - + ✕ @@ -1232,238 +1227,222 @@ - + mtDate: %1 - + mtInterval: %1 - + mtEndDate: %1 - + mtFlag: %1 - + timeoutDay: %1 - - + + 13.读卡器故障! - + %1/%2/%3 - - + 测试时间结束,准备关机 - + 开始自检,请等待60秒............... - - 开始自检,请等待%1秒............... + + 开始自检,请等待%1秒... - - + + 自检完成!!! - - - + + + 警告 - + 确认要刷墨水卡吗? - - + + 不需要刷墨水卡! - - + + 请先添加墨水再刷墨水卡! - - - + + 刷墨水卡成功! - + 确认要刷溶剂卡吗? - - + + 不需要刷溶剂卡! - - + + 请先添加溶剂再刷溶剂卡! - - - + + 刷溶剂卡成功! - + 确认要刷保养卡吗? - - - + + 刷保养卡成功! - - + + MAC无效卡! - + card data: %1 - + 无效卡,这张卡已经在%1时使用过 - + ink Warning at: %1 - + solvent Warning at: %1 - - 压力泄漏或压力传感器故障! - - - - - - + + 电机故障 - - 电机故障!!! - - - - - + + 回收槽到头 - - + 回收槽卡住或者回收槽开关时间设置错误 - + 错误!粘度计故障:检测不到上位灯 - + 压力过高,请检查管路是否堵塞,然后点击故障恢复按钮 - + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! - + 墨水液位报警超过48小时,机器无法正常打印,请先添加原厂墨水再刷墨水卡,以恢复喷码机的正常工作! - + 请刷溶剂卡,请使用原厂溶剂耗材,否则机器将在%1小时后禁止使用! - + 溶剂液位报警超过48小时,机器无法正常打印,请先添加溶剂再刷溶剂卡以恢复喷码机的正常工作! - + 保养期还有%1天到期,请及时保养,否则喷码机容易损坏 - + 保养期已超过%1天,请进行保养以恢复喷码机的正常使用 - + 刷卡倒计时起始时间文件不存在 - + 请稍候 - - + + 刷溶剂卡倒计时: %1 秒 @@ -1476,421 +1455,421 @@ - + 1 书 - + 2 输 - + 3 数 - + 4 属 - + 5 熟 - + 上一页 - + 下一页 - + ` - + 1 - + 2 - + 3 - + 4 - + 5 - + 6 - + 7 - + 8 - + 9 - + 0 - + - - + = - + 退格 - - + + 英文 - + q - + w - + e - + r - + t - + y - + u - + i - + o - + p - + [ - + ] - + \ - - + + 大写 - + a - + s - + d - + f - + g - + h - + j - + k - + l - + ; - + ' - + Enter - + Shift - + z - + x - + c - + v - + b - + n - + m - + , - + . - + / - + 上 - + 特殊字 - + 隐藏 - + Ctrl - + 删除 - + 行首 - + 行尾 - + 左 - + 下 - + 右 - - + + 错误 - + hanziDisplayLabels缺少初始化 - + warning - + myInputMethod is null - + 找不到输入法初始化文件 - + 小写 - + Tiếng Việt - + Russian - + Japanese - + 全选 - + 复制 - + 粘贴 - + 剪切 - + 后退 @@ -1941,16 +1920,16 @@ - - + + ← - - + + → @@ -1985,7 +1964,7 @@ - + 字符间距 @@ -2011,7 +1990,7 @@ - + ✕ @@ -2037,7 +2016,7 @@ - + TextLabel @@ -2052,72 +2031,72 @@ - + 粘度 - + 高压包 - + 隔膜位置 - + 压力 - + 墨线开关 - - 喷头盖开 + + 喷嘴逆清洗 - + 墨水缸满 - + 墨水液位 - + 溶剂液位 - + 回收故障 - + 粘度故障 - + 相位故障 - + 高压故障 - + 故障恢复 @@ -2132,64 +2111,69 @@ - - - - - + + + + + 警告 - - - + + + 无法打开文件 - - - - + + + + 提示 - + 是否确认将所有日志文件导出到U盘? - + U盘目录创建失败 - + U盘未插入或无法识别,请重新插拔设备! - + 成功导出到U盘 - + 选择历史记录文件 - + 是否确认将历史日志文件全部清除? - + 是否确认将当前日志全部清除? + + + 清洗中,界面锁死 + + MainInstruction @@ -2198,218 +2182,99 @@ Form + + + 网口通信 + + + + + 时间设置 + + - 文件 + 服务 + 文件 - - 重置所有计数器 - - - - - 建立新文件单 - - - - - 调入文件喷印 - - - - - 建立新文件 - - - - - 打开文件进行编辑 - - - - - 编辑当前文件 - - - - - 保存计数器 - - - - - 额外 - - - - - Delete extern text memory - - - - - 建立快捷功能键 - - - - - 产品计数器设置 - - - - - 直接启动喷印 - - - - - 脱离 - - - - + 图形编辑器 - - 管理器 - - - - - 设置 - - - - - 液压设置 - - - - - 启用口令保护 - - - - - 输入/输出设置 - - - - - 接口设置 - - - - - 口令设置 - - - - + 基本设置 - + 服务 - - 信息 - - - - - 输入/输出信号检验 - - - - - 数据记录 - - - - - 试喷 - - - - + 系统设置 - + 系统管理 - - 触摸校准 - - - - + 其他设置 - + 设置保养间隔 - - 液压/喷头 - - - - + 系统更新 - + 系统授权 - + ✕ - + mtDate1: %1 - + mtInterval1: %1 - + mtEndDate1: %1 - + mtFlog1: %1 - + 提示 - + RFID卡清零! @@ -2417,405 +2282,382 @@ MainWidget - + background-color:#6A7289; - + 编辑当前文件 - + 调入文件喷印 - + 主指令单 - + 管理器 - + 信息 - + background-color:#BCBFC4; - + background-color:#CACCC9; - - - + + background-color:#BBBBBD;border-radius:3px; - - - + + + 0 + + + + + 达到数量后停止: + + + + + 开始打印 + + + + color:#000000;font-size:18px; - - 喷头盖已盖上 - - - - - 墨剂开启 - - - - + 速度 米/分 - + color:#3CB371;font-size:18px; - + 当前 - + color:#E72F28;font-size:18px; - + 最大 - + color:#3CB371;font-size:24px; - + 0007.9 - + color:#E72F28;font-size:24px; - + 0020.3 - - color:#000000;font-size:18px;padding-left:20px; + + 停止打印 - + + 喷嘴开启 + + + + + 喷嘴关闭 + + + + 产品计数器 - - 00000000 - - - - + color:#000000;font-size:28px;font-weight:bold; - - 0000000000 - - - - - - - background-color:#C5C4BF;border-radius:3px; - - - - - - - - - + border:0px; - - - - - - - + + + + + + + 警告 - + 回收槽未关,是否关闭回收槽后关机! - + 是否确认关机? - - - - 正在准备关机,请等待%1秒............... - - - - - 准备关机...... - - - - - 关机失败!!! - - - - + 最多支持的列数目为:%1请减小信息长度. - - - - + + 变量数大于8个,某些变量将不起作用!!! - - + + 请减少信息中的变量(或计数器)数量. - + warning,界面上有变量未显示完全 - - - - + + + + 错误 - + 喷头盖未关,请先关喷头盖! - + 墨线未开,请先开墨线开关! - + 当前总列数 %1 ,支持的总列数为 %2,请减少打印串的长度 - + 打印耗时 %1ms ,触发间隔 :%2ms ,触发间隔至少应当大于打印耗时3ms - - 开始打印1 + + + 高压故障 - + + + 相位故障 + + + + + + 粘度故障 + + + + + + 回收故障 + + + + + + 溶液液位 + + + + + + 墨水液位 + + + + + + 墨水缸满 + + + + + + 墨线开关 + + + + + 正常 + + + + 提示 - + 随机码文本将展出到U盘,请插入U盘 - - 正在排气 ............... - - - - + 正在打开回收槽... - + 停止打开 - - + + 回收槽之前发生阻塞或回收槽时间设置错误,是否强制将当前位置设为到顶位置? - + 正在关闭回收槽... - + 停止关闭 - - + + %1.%2 - - 回收槽未到底!!!!!! - - - - - - - 正在喷印............... - - - - - - 暂停喷印............... - - - - - 喷头盖开, 喷印无法正常进行!!! - - - - + 墨水缸满报警 - + 墨水液位报警 - + 溶剂液位报警 - - + 高压故障,暂停打印 - + 高压故障,暂停打印. - + 高压故障,关回收槽 - - 高压故障,关回收槽和墨线 - - - - - + 回收故障,关闭回收槽,关墨线 - - 回收故障. - - - - + 回收异常,墨线可能偏离.(%1) - + 相位故障:飞行时间错误! - + 相位故障:相位检测错误! - - - + + 相位故障,准备关机 - - - + + 相位故障,暂停打印 - + 相位故障,屏蔽DAC输出 - - + 相位故障,屏蔽充电 @@ -3151,268 +2993,258 @@ p, li { white-space: pre-wrap; } - - 使用齿轮泵 - - - - - 使用回收泵 - - - - + 信息上下颠倒 - + 信息左右颠倒 - + PrintGo信号页1 - + 脉冲信号值: - + 无镜像打印 - + 自动水平翻转 - + 自动垂直翻转 - + 中心对称旋转 - + 镜象交替类型 - - - - + + + + 延时(毫秒): - + 镜像交替间隔 - - - + + + 触发延时(毫秒) - + 脉冲输出使能 - + 禁止电眼清零 - + 允许电眼复位 - + 允许电眼立即复位 - + 电眼清零 - + 字符宽度: - + 产生脉冲所需计数: - + 间隔模式: - + 行末<->行首 - + 行首<->行首 - + PrintGo信号页2 - - - - + + + + 重复间隔(毫秒) - + 重复次数 - - + + 封锁时间(毫秒) - + 同步器清零 - + 同步打印 - + 电眼信号来源 - - + + 内部 - - + + 外部 - + 光电边沿触发 - + 光电电平触发 - + GroupBox - + 延时触发 - + 编码器参数 - + 脉冲数/毫米 - + 脉冲数修正 - + 喷印间隔(毫米) - + 同步喷印模式 - + 按字符宽度 - + 按喷印比例 - + 同步器正反转打印 - + 同步器只正转打印 - + 同步器只反转打印 - + 同步器触发 - + 同步器来源 - + ✕ - + ✓ @@ -3427,54 +3259,54 @@ p, li { white-space: pre-wrap; } - + 提示:参数不正确 - + 要求:触发长度小于喷印间隔 - - - - + + + + 延时(毫米): - - - + + + 触发延时(毫米) - - + + 重复间隔(毫米) - - + + 封锁间隔(毫米) - + 封锁间隔(毫秒) - + 字符宽度 - + 喷印比例(%) @@ -3763,123 +3595,123 @@ p, li { white-space: pre-wrap; } - + ✓ - + ✕ - + 整体设置 - - - + + + 班时编号 - - + + 班时时间 - - + + 新建行 - + 标号 - + 1 - + 00:00 - + A - + 2 - + 08:09 - + B - + 3 - + 12:00 - + C - + 可选用的班次时间: - + 23 - - + + ← - - + + → - + 添加 - + 移除 - + hh:mm @@ -3915,15 +3747,30 @@ p, li { white-space: pre-wrap; } - + 采用预设值 - + 确认 + + + 预设值: + + + + + 当前值: + + + + + 采用当前值 + + SystemManage @@ -3933,540 +3780,475 @@ p, li { white-space: pre-wrap; } - + 手动控制泵阀 - + 齿轮泵关 - + 齿轮泵开 - + 回收槽开 - - - - - - - - - - + + + + + + + + + + 停止 - + 回收槽关 - + 粘度泵 - + 混合阀 - + 回收泵 - + 主墨泵 - - + + 压缩机 - + 泄压阀 - + 墨水阀 - + 循环阀 - - 切换键盘 - - - - - 更新字库 - - - - - 导出字库 - - - - + 环境配置 - - 烧录单片机软件 - - - - - 时间设置 - - - - - 导出配置到U盘 - - - - - 从U盘导入配置 - - - - + 重启 - + 排气 - - 烧录FPGA - - - - - 更新软件 - - - - + ✕ - - - - - + + + + + 自动 - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + 开 - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + 关 - - - - - - - - - - - + + + + + + + + + + 警告 - + 是否确认进入手动模式? - + 请先确认已经关闭回收槽,确认进入自动模式? - - - - + + + + 手动 - - - + + + 请先移开喷头盖! - - - - - - - - + + + + + + + + 启动 - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + 提示 - - - - + + + + 密码不正确! - + Application - + 是否确认更新字库? - + 没找到对应字库,更新失败! - + 更新字库成功,重启后生效! - + 恢复出厂设置成功,请重新关机上电 - + 校准触摸屏 - + 是否确认开始校准程序?请小心进行校准! - + 是否确认更新软件? - - - - - - - - - - + + + + + + + + + 错误 - + 更新失败! - + 软件更新成功,重启后生效! - + 找不到更新软件! - + 是否确认更新系统? - + 系统更新成功,重启后生效! - + 文件不存在! - + 如果开始清洗,务必确认回收槽已经打开10毫米以上,并且在一分钟后将停止清洗 - + 开始清洗 - + 停止清洗 - + 压力 - + autoclean cancel or status: - + (2/3) Cleaning - + (3/3) Cleaning - + 是否确认导出配置到U盘? - + 检测不到U盘 - + 成功导出配置到U盘 - + 是否确认从U盘导入配置? - + 配置文件/udisk/sysPara.bin不存在! - + 从U盘成功导入配置,重启后生效! - + autoclean start - - 是否确认导出字库到U盘? - - - - - U盘不可识别! - - - - - 字库导出完成! - - - - + 是否开始电机测试? - + Cancel - + 正在排气,是否停止? - + 确定要升级FPGA软件吗? - + 找不到 lib.tar! - + 无法删除旧的 lib.tar! - + 复制 tar 包失败! - + 解压失败,请检查权限! - + 移动库文件失败! - + 环境配置成功! - + 切换失败! - + 切换成功,重启后生效! - + 找不到软件! - + 找到多个软件,请删除多余的文件,只保留一个! - + 确定要升级单片机软件吗? - + 升级成功,请重启QtUI! - + 升级失败! @@ -4720,117 +4502,97 @@ p, li { white-space: pre-wrap; } - + 重置高压 - - 界面语言设置 - - - - + 喷嘴逆清洗 - + ✓ - + ✕ - - + + 错误 - + 实际频率不能为%1 - - + + 提示 - + 应用成功 - + 自动清洗时间约为一分钟,然后自动停止 - + 开始清洗 - + 停止清洗 - + 正在喷嘴逆清洗...... - + 清洗完成 - + Application - + 是否更新高压包电流数据? - + 喷头盖未关,请先关喷头盖! - + Oscillator voltage %1 --- 最长高电平时钟 %2 - + 最佳晶振电压完成 - - - Tiếng Việt(Vietnamese interface) - - - - - Chinese interface(中文界面) - - - - - English interface(英文界面) - - SystemUpdate @@ -4845,25 +4607,65 @@ p, li { white-space: pre-wrap; } - + 烧录FPGA - + 更新软件 - + + 界面语言设置 + + + + 烧录单片机软件 - + 更新字库 + + + 导出字库 + + + + + 警告 + + + + + 是否确认导出字库到U盘? + + + + + 错误 + + + + + U盘不可识别! + + + + + 提示 + + + + + 字库导出完成! + + TestPrintWidget @@ -4873,40 +4675,14 @@ p, li { white-space: pre-wrap; } - - QWidget { font-family: Arial; font-size: 12px; } - - - - - - - - - - - QPushButton { - border: 1px solid #cccccc; border-radius:8px; - padding: 10px; - font-size: 14px; - text-align: center; - } - QPushButton:checked { - border: 2px solid #0078d7; - background-color: #f0f8ff; - } - - - - - + + background-color:#828E9E; - - - + + QPushButton { background: qlineargradient(x1: 0.5, y1: 0, x2: 0.5, y2: 1, stop: 0 #6F9CD6, stop: 1 #FFFFFF); border: 1px solid #a0a0a0; @@ -4924,14 +4700,13 @@ p, li { white-space: pre-wrap; } - + background-color:#C4C5C9; - - - + + QPushButton { background-color: #ffffff; border: 1px solid #a8a8a8; @@ -4947,64 +4722,112 @@ p, li { white-space: pre-wrap; } - - QComboBox { - background-color: #e5e5e5; - border: 1px solid #a8a8a8; - border-radius: 2px; - padding: 4px 20px 4px 8px; - icon-size:60px 60px; - } - QComboBox::drop-down { width: 30px; } + + 文字 - - 5点(英) + + 条形码 - - 7点(英) + + 图标 - - 9点(英) + + 日期时间 - - 12点(英) + + 计数器 - - 16点(英) + + 轮班 - - 24点(英) + + 保存 - - 32点(英) + + 打印设置 - + + 图元设置 + + + + + 复制 + + + + + 粘贴 + + + + + 删除 + + + + + 5 dot + + + + + 7 dot + + + + + 9 dot + + + + + 12 dot + + + + + 16 dot + + + + + 24 dot + + + + + 32 dot + + + + UK - + US - + QLineEdit { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -5016,13 +4839,13 @@ p, li { white-space: pre-wrap; } - + JET2neo-TEST - - + + QPushButton { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -5041,19 +4864,19 @@ p, li { white-space: pre-wrap; } - + << - + >> - - - + + + QLabel { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -5066,20 +4889,20 @@ p, li { white-space: pre-wrap; } - + Y:9 - + X:105 - - - - + + + + QPushButton { background-color: #87CEEB; border: 1px solid #4682B4; @@ -5099,42 +4922,42 @@ p, li { white-space: pre-wrap; } - + ↑ - + ← - + → - + ↓ - + ID:1 - + ✓ - + 提示 - + 是否保存文件? @@ -5190,121 +5013,111 @@ p, li { white-space: pre-wrap; } - + 高度 - + 宽度 - + 图像裁剪 - + 缩小 - + 放大 - + 图像扩张 - + 保存为 - + 新建 - + 打开 - - - + + + 保存 - - 导入 - - - - - A - - - - + 编辑图案 - + ✕ - + 提示 - + 图片已经改变,是否保存? - + 放弃保存 - - - + + + 放大倍数:%1 - + 图片另存为... - + 另存为 - + 打开文件 - + 图片保存为... - + 导入文件 @@ -5481,18 +5294,18 @@ p, li { white-space: pre-wrap; } zkWidget - - + + 警告 - + 最大支持宽度:%1 高度:%2 当前请求:%3 x %4 - + 请新创建建图片 diff --git a/systemsetting.ui b/systemsetting.ui index 67636fe..679806a 100644 --- a/systemsetting.ui +++ b/systemsetting.ui @@ -845,6 +845,25 @@ + + + + + 0 + 40 + + + + + 200 + 16777215 + + + + 喷嘴逆清洗 + + + @@ -858,7 +877,7 @@ - 260 + 200 16777215 @@ -870,41 +889,6 @@ - - - - true - - - - 0 - 40 - - - - - 260 - 16777215 - - - - 界面语言设置 - - - - - - - - 0 - 40 - - - - 喷嘴逆清洗 - - -
@@ -939,6 +923,9 @@ ClickLabel QLabel
ClickLabel.h
+ + pressed() + diff --git a/testprintwidget.cpp b/testprintwidget.cpp index d789e88..f421f85 100644 --- a/testprintwidget.cpp +++ b/testprintwidget.cpp @@ -191,6 +191,11 @@ TestPrintWidget::TestPrintWidget(QWidget* parent) emit sig_showEditCounter(vm); }); + connect(ui.btnBarcode, &QPushButton::clicked, [this](){ + pPicScene->clearSelection(); + showBarcodeEditor(); + }); + // X,Y label connection connect(pPicScene, &PicScene::focusedItemPosChanged, this, &TestPrintWidget::onSceneFocusedItemPosChanged); @@ -214,6 +219,8 @@ TestPrintWidget::TestPrintWidget(QWidget* parent) itemEditor = new ItemEditor(); connect(itemEditor, &ItemEditor::accepted, this, &TestPrintWidget::onItemEditorAccepted); + connect(&m_barcodeEditor, &BarcodeEditor::accepted, this, &TestPrintWidget::slt_BarCodeItemDone); + initSelecteCodeDlg(); // 网络通信,暂时屏蔽 @@ -252,6 +259,7 @@ QPixmap TestPrintWidget::loadIcon(const QString& iconName, const QSize& size) void TestPrintWidget::on_openfileButton_pressed() { pPicScene->clearSelection(); + pPicScene->clearFocus(); dialogFileOperation->refreshListView(editMode); dialogFileOperation->exec(); } @@ -1219,39 +1227,41 @@ void TestPrintWidget::onCreateSceneImage(QString filePath) void TestPrintWidget::on_KeyUp_clicked() { - pViewer->setFocus(); -#ifndef Q_OS_WIN32 - //QWSServer::sendKeyEvent(0,Qt::Key_Up,Qt::NoModifier,true,false); //向系统发送键盘事件 - MyInputMethod::sendEvent(Qt::Key_Up,Qt::NoModifier); -#endif + moveSelectedItem(Qt::Key_Up); } void TestPrintWidget::on_KeyLeft_clicked() { - pViewer->setFocus(); -#ifndef Q_OS_WIN32 - //QWSServer::sendKeyEvent(0,Qt::Key_Left,Qt::NoModifier,true,false); //向系统发送键盘事件 - MyInputMethod::sendEvent(Qt::Key_Left,Qt::NoModifier); -#endif + moveSelectedItem(Qt::Key_Left); } void TestPrintWidget::on_KeyRight_clicked() { - pViewer->setFocus(); -#ifndef Q_OS_WIN32 - //QWSServer::sendKeyEvent(0,Qt::Key_Right,Qt::NoModifier,true,false); //向系统发送键盘事件 - MyInputMethod::sendEvent(Qt::Key_Right,Qt::NoModifier); -#endif + moveSelectedItem(Qt::Key_Right); } void TestPrintWidget::on_KeyDown_clicked() { - pViewer->setFocus(); -#ifndef Q_OS_WIN32 - //QWSServer::sendKeyEvent(0,Qt::Key_Down,Qt::NoModifier,true,false); //向系统发送键盘事件 - MyInputMethod::sendEvent(Qt::Key_Down,Qt::NoModifier); -#endif + moveSelectedItem(Qt::Key_Down); +} +void TestPrintWidget::moveSelectedItem(Qt::Key key) +{ + pViewer->setFocus(); + auto selectedItems = pPicScene->selectedItems(); + QGraphicsItem* lastItem = nullptr; + if(selectedItems.size() >= 1) { + lastItem = selectedItems.last(); + } + + if(lastItem) { + lastItem->setFocus(); + } + +#ifndef Q_OS_WIN32 + //QWSServer::sendKeyEvent(0,Qt::Key_Up,Qt::NoModifier,true,false); //向系统发送键盘事件 + MyInputMethod::sendEvent(key, Qt::NoModifier); +#endif } void TestPrintWidget::on_delButton_pressed() @@ -1371,13 +1381,12 @@ void TestPrintWidget::onBtnItemConfigClicked() } if (item->sourceType() == SourceType::CODE) { - QString s = item->source().toString(); - editCodeFlag = true; - if (s.contains(QString("QR")) || s.contains(QString("DMT"))) { - emit sendButtonClickedSignal(202); - } else if (s.contains(QString("BAR"))) { - emit sendButtonClickedSignal(201); - } + auto codeItem = dynamic_cast(item); + if(!codeItem) + return; + + m_barcodeEditor.bindViewModel(codeItem->barcodeViewModel()); + showBarcodeEditor(false); return; } @@ -1414,26 +1423,37 @@ void TestPrintWidget::on_newfileButton_pressed(){ sendButtonClickedSignal(21); //新建文件完成 } -void TestPrintWidget::slt_BarCodeItemDone(QString str) +void TestPrintWidget::slt_BarCodeItemDone() { - if (editCodeFlag) { - on_delButton_pressed(); - editCodeFlag = false; + auto vm = m_barcodeEditor.viewModel(); + + // 如果当前选中了一个条形码或二维码,则更新其内容,然后直接返回 + bool flag = false; + auto selectedItem = pPicScene->selectedItems(); + for(auto item : selectedItem) { + auto codeItem = dynamic_cast(item); + if(codeItem) { + codeItem->setBarcodeViewModel(vm); + flag = true; + } } - addCodeItem(str); - m_TextEdit->clear(); + if(flag) + return; - int index = checkSelectScene(); - if (index == -1) return; - - QString html = m_TextEdit->toHtml(); - foreach (QGraphicsItem *item, pPicScene->selectedItems()) - { - PicCodeItem *pItem = (PicCodeItem*)item; - pItem->setHtml(html); - pItem->setSource(str); + if(vm.contentPattern.isEmpty()) { + qInfo() << "Empty content pattern, the barcode will not be generated."; + return; } + + // 添加条形码或验证码 + pPicScene->clearSelection(); + PicCodeItem* item = new PicCodeItem(0, 0, SourceType::CODE); + item->setBarcodeViewModel(vm); + auto boundingRect = pPicScene->itemsBoundingRect(); + pPicScene->addItem(item); + item->setPos(boundingRect.right(), 0.0); + item->setSelected(true); } void TestPrintWidget::slt_QRCodeItemDone(QString str) @@ -1619,11 +1639,14 @@ void TestPrintWidget::addCounterItem(CounterViewModel vm, QSharedPointer } } -void TestPrintWidget::on_btnBarcode_clicked() +void TestPrintWidget::showBarcodeEditor(bool restoreViewModel) { #if defined(ARCH_AARCH64) m_barcodeEditor.setWindowState(Qt::WindowFullScreen); #endif + if(restoreViewModel) + m_barcodeEditor.restoreViewModel(); + m_barcodeEditor.show(); } diff --git a/testprintwidget.h b/testprintwidget.h index 6d700b5..4db7c27 100644 --- a/testprintwidget.h +++ b/testprintwidget.h @@ -67,6 +67,7 @@ public: void on_KeyLeft_clicked(); void on_KeyRight_clicked(); void on_KeyDown_clicked(); + void on_delButton_pressed(); void setFontNameIndex(float); @@ -98,7 +99,7 @@ public slots: void on_newfileButton_pressed(); - void slt_BarCodeItemDone(QString str); + void slt_BarCodeItemDone(); void slt_QRCodeItemDone(QString str); protected: @@ -116,7 +117,7 @@ private slots: void addDateItem(); - void on_btnBarcode_clicked(); + void showBarcodeEditor(bool restoreVM = true); void onBtnArrowClicked(); @@ -137,6 +138,12 @@ private: 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)); diff --git a/thai.ts b/thai.ts index 955903d..b308349 100644 --- a/thai.ts +++ b/thai.ts @@ -9,161 +9,151 @@ - + 整体设置 - + 变量类型 - - + + 计数器1 - - + + 计数器2 - + 数字个数: - + 1 - + 2 - + 3 - + 4 - + 5 - + 6 - + 7 - + 8 - - + + 字符间距 + + + + + + ← + + + + + + → + + + + + 增量值: - - + + 额外设置 + + + + + 如果预览与打印显示不正确,调整此设置可能恢复。 + + + + + 自定义字符宽度 + + + + + 当前值: - + 可变长度 - - + + 重复数: - + 小数点位数 - - - 重设值 - - - - - + + 结束值: - - + + 起始值: - - - 清零 - - - - - 代替 - - - - - 数据 - - - - - 下 - - - - - 预设值 - - - - - 上 - - - - - 类型 - - - - + ✓ - + ✕ @@ -176,198 +166,198 @@ - + ✓ - + ✕ - + 整体设置 - + 日期/时间 - + 内容 - + 有效期限 - - + + 天数 - + 月 - 精确到日 - + 月 - 精确到月 - + . - + : - + , - + / - + ; - + _ - - + + - - - + + 小时 - + 分钟 - + 秒钟 - - + + 月 - + 年2026 - + 日 - + 年中第几周 - + 年26 - - + + 周几 - + 空格 - + <------ - + + - - + + 代替 - + 名称 - + 数据 - + 年 - + Meridiem - + 类型 - + 上 - + 下 - + 预设值 - + 高级选项 @@ -757,12 +747,12 @@ - + 警告 - + U盘未插入或U盘根目录下的doc文件夹不存在! @@ -770,75 +760,80 @@ DigitalInput - + Form - + 9 - + 3 - + 8 - + - - + 退格 - + 1 - + 4 - + 0 - + + 清零 + + + + + Enter + + + + 5 - + 7 - + 2 - + 6 - - - 全选 - - DlgInputAddr @@ -1190,22 +1185,22 @@ - + 系统 - + U盘 - + ✓ - + ✕ @@ -1232,238 +1227,222 @@ - + mtDate: %1 - + mtInterval: %1 - + mtEndDate: %1 - + mtFlag: %1 - + timeoutDay: %1 - - + + 13.读卡器故障! - + %1/%2/%3 - - + 测试时间结束,准备关机 - + 开始自检,请等待60秒............... - - 开始自检,请等待%1秒............... + + 开始自检,请等待%1秒... - - + + 自检完成!!! - - - + + + 警告 - + 确认要刷墨水卡吗? - - + + 不需要刷墨水卡! - - + + 请先添加墨水再刷墨水卡! - - - + + 刷墨水卡成功! - + 确认要刷溶剂卡吗? - - + + 不需要刷溶剂卡! - - + + 请先添加溶剂再刷溶剂卡! - - - + + 刷溶剂卡成功! - + 确认要刷保养卡吗? - - - + + 刷保养卡成功! - - + + MAC无效卡! - + card data: %1 - + 无效卡,这张卡已经在%1时使用过 - + ink Warning at: %1 - + solvent Warning at: %1 - - 压力泄漏或压力传感器故障! - - - - - - + + 电机故障 - - 电机故障!!! - - - - - + + 回收槽到头 - - + 回收槽卡住或者回收槽开关时间设置错误 - + 错误!粘度计故障:检测不到上位灯 - + 压力过高,请检查管路是否堵塞,然后点击故障恢复按钮 - + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! - + 墨水液位报警超过48小时,机器无法正常打印,请先添加原厂墨水再刷墨水卡,以恢复喷码机的正常工作! - + 请刷溶剂卡,请使用原厂溶剂耗材,否则机器将在%1小时后禁止使用! - + 溶剂液位报警超过48小时,机器无法正常打印,请先添加溶剂再刷溶剂卡以恢复喷码机的正常工作! - + 保养期还有%1天到期,请及时保养,否则喷码机容易损坏 - + 保养期已超过%1天,请进行保养以恢复喷码机的正常使用 - + 刷卡倒计时起始时间文件不存在 - + 请稍候 - - + + 刷溶剂卡倒计时: %1 秒 @@ -1476,421 +1455,421 @@ - + 1 书 - + 2 输 - + 3 数 - + 4 属 - + 5 熟 - + 上一页 - + 下一页 - + ` - + 1 - + 2 - + 3 - + 4 - + 5 - + 6 - + 7 - + 8 - + 9 - + 0 - + - - + = - + 退格 - - + + 英文 - + q - + w - + e - + r - + t - + y - + u - + i - + o - + p - + [ - + ] - + \ - - + + 大写 - + a - + s - + d - + f - + g - + h - + j - + k - + l - + ; - + ' - + Enter - + Shift - + z - + x - + c - + v - + b - + n - + m - + , - + . - + / - + 上 - + 特殊字 - + 隐藏 - + Ctrl - + 删除 - + 行首 - + 行尾 - + 左 - + 下 - + 右 - - + + 错误 - + hanziDisplayLabels缺少初始化 - + warning - + myInputMethod is null - + 找不到输入法初始化文件 - + 小写 - + Tiếng Việt - + Russian - + Japanese - + 全选 - + 复制 - + 粘贴 - + 剪切 - + 后退 @@ -1941,16 +1920,16 @@ - - + + ← - - + + → @@ -1985,7 +1964,7 @@ - + 字符间距 @@ -2011,7 +1990,7 @@ - + ✕ @@ -2037,7 +2016,7 @@ - + TextLabel @@ -2052,72 +2031,72 @@ - + 粘度 - + 高压包 - + 隔膜位置 - + 压力 - + 墨线开关 - - 喷头盖开 + + 喷嘴逆清洗 - + 墨水缸满 - + 墨水液位 - + 溶剂液位 - + 回收故障 - + 粘度故障 - + 相位故障 - + 高压故障 - + 故障恢复 @@ -2132,64 +2111,69 @@ - - - - - + + + + + 警告 - - - + + + 无法打开文件 - - - - + + + + 提示 - + 是否确认将所有日志文件导出到U盘? - + U盘目录创建失败 - + U盘未插入或无法识别,请重新插拔设备! - + 成功导出到U盘 - + 选择历史记录文件 - + 是否确认将历史日志文件全部清除? - + 是否确认将当前日志全部清除? + + + 清洗中,界面锁死 + + MainInstruction @@ -2198,218 +2182,99 @@ Form + + + 网口通信 + + + + + 时间设置 + + - 文件 + 服务 + 文件 - - 重置所有计数器 - - - - - 建立新文件单 - - - - - 调入文件喷印 - - - - - 建立新文件 - - - - - 打开文件进行编辑 - - - - - 编辑当前文件 - - - - - 保存计数器 - - - - - 额外 - - - - - Delete extern text memory - - - - - 建立快捷功能键 - - - - - 产品计数器设置 - - - - - 直接启动喷印 - - - - - 脱离 - - - - + 图形编辑器 - - 管理器 - - - - - 设置 - - - - - 液压设置 - - - - - 启用口令保护 - - - - - 输入/输出设置 - - - - - 接口设置 - - - - - 口令设置 - - - - + 基本设置 - + 服务 - - 信息 - - - - - 输入/输出信号检验 - - - - - 数据记录 - - - - - 试喷 - - - - + 系统设置 - + 系统管理 - - 触摸校准 - - - - + 其他设置 - + 设置保养间隔 - - 液压/喷头 - - - - + 系统更新 - + 系统授权 - + ✕ - + mtDate1: %1 - + mtInterval1: %1 - + mtEndDate1: %1 - + mtFlog1: %1 - + 提示 - + RFID卡清零! @@ -2417,405 +2282,382 @@ MainWidget - + background-color:#6A7289; - + 编辑当前文件 - + 调入文件喷印 - + 主指令单 - + 管理器 - + 信息 - + background-color:#BCBFC4; - + background-color:#CACCC9; - - - + + background-color:#BBBBBD;border-radius:3px; - - - + + + 0 + + + + + 达到数量后停止: + + + + + 开始打印 + + + + color:#000000;font-size:18px; - - 喷头盖已盖上 - - - - - 墨剂开启 - - - - + 速度 米/分 - + color:#3CB371;font-size:18px; - + 当前 - + color:#E72F28;font-size:18px; - + 最大 - + color:#3CB371;font-size:24px; - + 0007.9 - + color:#E72F28;font-size:24px; - + 0020.3 - - color:#000000;font-size:18px;padding-left:20px; + + 停止打印 - + + 喷嘴开启 + + + + + 喷嘴关闭 + + + + 产品计数器 - - 00000000 - - - - + color:#000000;font-size:28px;font-weight:bold; - - 0000000000 - - - - - - - background-color:#C5C4BF;border-radius:3px; - - - - - - - - - + border:0px; - - - - - - - + + + + + + + 警告 - + 回收槽未关,是否关闭回收槽后关机! - + 是否确认关机? - - - - 正在准备关机,请等待%1秒............... - - - - - 准备关机...... - - - - - 关机失败!!! - - - - + 最多支持的列数目为:%1请减小信息长度. - - - - + + 变量数大于8个,某些变量将不起作用!!! - - + + 请减少信息中的变量(或计数器)数量. - + warning,界面上有变量未显示完全 - - - - + + + + 错误 - + 喷头盖未关,请先关喷头盖! - + 墨线未开,请先开墨线开关! - + 当前总列数 %1 ,支持的总列数为 %2,请减少打印串的长度 - + 打印耗时 %1ms ,触发间隔 :%2ms ,触发间隔至少应当大于打印耗时3ms - - 开始打印1 + + + 高压故障 - + + + 相位故障 + + + + + + 粘度故障 + + + + + + 回收故障 + + + + + + 溶液液位 + + + + + + 墨水液位 + + + + + + 墨水缸满 + + + + + + 墨线开关 + + + + + 正常 + + + + 提示 - + 随机码文本将展出到U盘,请插入U盘 - - 正在排气 ............... - - - - + 正在打开回收槽... - + 停止打开 - - + + 回收槽之前发生阻塞或回收槽时间设置错误,是否强制将当前位置设为到顶位置? - + 正在关闭回收槽... - + 停止关闭 - - + + %1.%2 - - 回收槽未到底!!!!!! - - - - - - - 正在喷印............... - - - - - - 暂停喷印............... - - - - - 喷头盖开, 喷印无法正常进行!!! - - - - + 墨水缸满报警 - + 墨水液位报警 - + 溶剂液位报警 - - + 高压故障,暂停打印 - + 高压故障,暂停打印. - + 高压故障,关回收槽 - - 高压故障,关回收槽和墨线 - - - - - + 回收故障,关闭回收槽,关墨线 - - 回收故障. - - - - + 回收异常,墨线可能偏离.(%1) - + 相位故障:飞行时间错误! - + 相位故障:相位检测错误! - - - + + 相位故障,准备关机 - - - + + 相位故障,暂停打印 - + 相位故障,屏蔽DAC输出 - - + 相位故障,屏蔽充电 @@ -3151,268 +2993,258 @@ p, li { white-space: pre-wrap; } - - 使用齿轮泵 - - - - - 使用回收泵 - - - - + 信息上下颠倒 - + 信息左右颠倒 - + PrintGo信号页1 - + 脉冲信号值: - + 无镜像打印 - + 自动水平翻转 - + 自动垂直翻转 - + 中心对称旋转 - + 镜象交替类型 - - - - + + + + 延时(毫秒): - + 镜像交替间隔 - - - + + + 触发延时(毫秒) - + 脉冲输出使能 - + 禁止电眼清零 - + 允许电眼复位 - + 允许电眼立即复位 - + 电眼清零 - + 字符宽度: - + 产生脉冲所需计数: - + 间隔模式: - + 行末<->行首 - + 行首<->行首 - + PrintGo信号页2 - - - - + + + + 重复间隔(毫秒) - + 重复次数 - - + + 封锁时间(毫秒) - + 同步器清零 - + 同步打印 - + 电眼信号来源 - - + + 内部 - - + + 外部 - + 光电边沿触发 - + 光电电平触发 - + GroupBox - + 延时触发 - + 编码器参数 - + 脉冲数/毫米 - + 脉冲数修正 - + 喷印间隔(毫米) - + 同步喷印模式 - + 按字符宽度 - + 按喷印比例 - + 同步器正反转打印 - + 同步器只正转打印 - + 同步器只反转打印 - + 同步器触发 - + 同步器来源 - + ✕ - + ✓ @@ -3427,54 +3259,54 @@ p, li { white-space: pre-wrap; } - + 提示:参数不正确 - + 要求:触发长度小于喷印间隔 - - - - + + + + 延时(毫米): - - - + + + 触发延时(毫米) - - + + 重复间隔(毫米) - - + + 封锁间隔(毫米) - + 封锁间隔(毫秒) - + 字符宽度 - + 喷印比例(%) @@ -3763,123 +3595,123 @@ p, li { white-space: pre-wrap; } - + ✓ - + ✕ - + 整体设置 - - - + + + 班时编号 - - + + 班时时间 - - + + 新建行 - + 标号 - + 1 - + 00:00 - + A - + 2 - + 08:09 - + B - + 3 - + 12:00 - + C - + 可选用的班次时间: - + 23 - - + + ← - - + + → - + 添加 - + 移除 - + hh:mm @@ -3915,15 +3747,30 @@ p, li { white-space: pre-wrap; } - + 采用预设值 - + 确认 + + + 预设值: + + + + + 当前值: + + + + + 采用当前值 + + SystemManage @@ -3933,540 +3780,475 @@ p, li { white-space: pre-wrap; } - + 手动控制泵阀 - + 齿轮泵关 - + 齿轮泵开 - + 回收槽开 - - - - - - - - - - + + + + + + + + + + 停止 - + 回收槽关 - + 粘度泵 - + 混合阀 - + 回收泵 - + 主墨泵 - - + + 压缩机 - + 泄压阀 - + 墨水阀 - + 循环阀 - - 切换键盘 - - - - - 更新字库 - - - - - 导出字库 - - - - + 环境配置 - - 烧录单片机软件 - - - - - 时间设置 - - - - - 导出配置到U盘 - - - - - 从U盘导入配置 - - - - + 重启 - + 排气 - - 烧录FPGA - - - - - 更新软件 - - - - + ✕ - - - - - + + + + + 自动 - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + 开 - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + 关 - - - - - - - - - - - + + + + + + + + + + 警告 - + 是否确认进入手动模式? - + 请先确认已经关闭回收槽,确认进入自动模式? - - - - + + + + 手动 - - - + + + 请先移开喷头盖! - - - - - - - - + + + + + + + + 启动 - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + 提示 - - - - + + + + 密码不正确! - + Application - + 是否确认更新字库? - + 没找到对应字库,更新失败! - + 更新字库成功,重启后生效! - + 恢复出厂设置成功,请重新关机上电 - + 校准触摸屏 - + 是否确认开始校准程序?请小心进行校准! - + 是否确认更新软件? - - - - - - - - - - + + + + + + + + + 错误 - + 更新失败! - + 软件更新成功,重启后生效! - + 找不到更新软件! - + 是否确认更新系统? - + 系统更新成功,重启后生效! - + 文件不存在! - + 如果开始清洗,务必确认回收槽已经打开10毫米以上,并且在一分钟后将停止清洗 - + 开始清洗 - + 停止清洗 - + 压力 - + autoclean cancel or status: - + (2/3) Cleaning - + (3/3) Cleaning - + 是否确认导出配置到U盘? - + 检测不到U盘 - + 成功导出配置到U盘 - + 是否确认从U盘导入配置? - + 配置文件/udisk/sysPara.bin不存在! - + 从U盘成功导入配置,重启后生效! - + autoclean start - - 是否确认导出字库到U盘? - - - - - U盘不可识别! - - - - - 字库导出完成! - - - - + 是否开始电机测试? - + Cancel - + 正在排气,是否停止? - + 确定要升级FPGA软件吗? - + 找不到 lib.tar! - + 无法删除旧的 lib.tar! - + 复制 tar 包失败! - + 解压失败,请检查权限! - + 移动库文件失败! - + 环境配置成功! - + 切换失败! - + 切换成功,重启后生效! - + 找不到软件! - + 找到多个软件,请删除多余的文件,只保留一个! - + 确定要升级单片机软件吗? - + 升级成功,请重启QtUI! - + 升级失败! @@ -4720,117 +4502,97 @@ p, li { white-space: pre-wrap; } - + 重置高压 - - 界面语言设置 - - - - + 喷嘴逆清洗 - + ✓ - + ✕ - - + + 错误 - + 实际频率不能为%1 - - + + 提示 - + 应用成功 - + 自动清洗时间约为一分钟,然后自动停止 - + 开始清洗 - + 停止清洗 - + 正在喷嘴逆清洗...... - + 清洗完成 - + Application - + 是否更新高压包电流数据? - + 喷头盖未关,请先关喷头盖! - + Oscillator voltage %1 --- 最长高电平时钟 %2 - + 最佳晶振电压完成 - - - Tiếng Việt(Vietnamese interface) - - - - - Chinese interface(中文界面) - - - - - English interface(英文界面) - - SystemUpdate @@ -4845,25 +4607,65 @@ p, li { white-space: pre-wrap; } - + 烧录FPGA - + 更新软件 - + + 界面语言设置 + + + + 烧录单片机软件 - + 更新字库 + + + 导出字库 + + + + + 警告 + + + + + 是否确认导出字库到U盘? + + + + + 错误 + + + + + U盘不可识别! + + + + + 提示 + + + + + 字库导出完成! + + TestPrintWidget @@ -4873,40 +4675,14 @@ p, li { white-space: pre-wrap; } - - QWidget { font-family: Arial; font-size: 12px; } - - - - - - - - - - - QPushButton { - border: 1px solid #cccccc; border-radius:8px; - padding: 10px; - font-size: 14px; - text-align: center; - } - QPushButton:checked { - border: 2px solid #0078d7; - background-color: #f0f8ff; - } - - - - - + + background-color:#828E9E; - - - + + QPushButton { background: qlineargradient(x1: 0.5, y1: 0, x2: 0.5, y2: 1, stop: 0 #6F9CD6, stop: 1 #FFFFFF); border: 1px solid #a0a0a0; @@ -4924,14 +4700,13 @@ p, li { white-space: pre-wrap; } - + background-color:#C4C5C9; - - - + + QPushButton { background-color: #ffffff; border: 1px solid #a8a8a8; @@ -4947,64 +4722,112 @@ p, li { white-space: pre-wrap; } - - QComboBox { - background-color: #e5e5e5; - border: 1px solid #a8a8a8; - border-radius: 2px; - padding: 4px 20px 4px 8px; - icon-size:60px 60px; - } - QComboBox::drop-down { width: 30px; } + + 文字 - - 5点(英) + + 条形码 - - 7点(英) + + 图标 - - 9点(英) + + 日期时间 - - 12点(英) + + 计数器 - - 16点(英) + + 轮班 - - 24点(英) + + 保存 - - 32点(英) + + 打印设置 - + + 图元设置 + + + + + 复制 + + + + + 粘贴 + + + + + 删除 + + + + + 5 dot + + + + + 7 dot + + + + + 9 dot + + + + + 12 dot + + + + + 16 dot + + + + + 24 dot + + + + + 32 dot + + + + UK - + US - + QLineEdit { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -5016,13 +4839,13 @@ p, li { white-space: pre-wrap; } - + JET2neo-TEST - - + + QPushButton { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -5041,19 +4864,19 @@ p, li { white-space: pre-wrap; } - + << - + >> - - - + + + QLabel { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -5066,20 +4889,20 @@ p, li { white-space: pre-wrap; } - + Y:9 - + X:105 - - - - + + + + QPushButton { background-color: #87CEEB; border: 1px solid #4682B4; @@ -5099,42 +4922,42 @@ p, li { white-space: pre-wrap; } - + ↑ - + ← - + → - + ↓ - + ID:1 - + ✓ - + 提示 - + 是否保存文件? @@ -5190,121 +5013,111 @@ p, li { white-space: pre-wrap; } - + 高度 - + 宽度 - + 图像裁剪 - + 缩小 - + 放大 - + 图像扩张 - + 保存为 - + 新建 - + 打开 - - - + + + 保存 - - 导入 - - - - - A - - - - + 编辑图案 - + ✕ - + 提示 - + 图片已经改变,是否保存? - + 放弃保存 - - - + + + 放大倍数:%1 - + 图片另存为... - + 另存为 - + 打开文件 - + 图片保存为... - + 导入文件 @@ -5481,18 +5294,18 @@ p, li { white-space: pre-wrap; } zkWidget - - + + 警告 - + 最大支持宽度:%1 高度:%2 当前请求:%3 x %4 - + 请新创建建图片 diff --git a/turkey.ts b/turkey.ts index 955903d..b308349 100644 --- a/turkey.ts +++ b/turkey.ts @@ -9,161 +9,151 @@ - + 整体设置 - + 变量类型 - - + + 计数器1 - - + + 计数器2 - + 数字个数: - + 1 - + 2 - + 3 - + 4 - + 5 - + 6 - + 7 - + 8 - - + + 字符间距 + + + + + + ← + + + + + + → + + + + + 增量值: - - + + 额外设置 + + + + + 如果预览与打印显示不正确,调整此设置可能恢复。 + + + + + 自定义字符宽度 + + + + + 当前值: - + 可变长度 - - + + 重复数: - + 小数点位数 - - - 重设值 - - - - - + + 结束值: - - + + 起始值: - - - 清零 - - - - - 代替 - - - - - 数据 - - - - - 下 - - - - - 预设值 - - - - - 上 - - - - - 类型 - - - - + ✓ - + ✕ @@ -176,198 +166,198 @@ - + ✓ - + ✕ - + 整体设置 - + 日期/时间 - + 内容 - + 有效期限 - - + + 天数 - + 月 - 精确到日 - + 月 - 精确到月 - + . - + : - + , - + / - + ; - + _ - - + + - - - + + 小时 - + 分钟 - + 秒钟 - - + + 月 - + 年2026 - + 日 - + 年中第几周 - + 年26 - - + + 周几 - + 空格 - + <------ - + + - - + + 代替 - + 名称 - + 数据 - + 年 - + Meridiem - + 类型 - + 上 - + 下 - + 预设值 - + 高级选项 @@ -757,12 +747,12 @@ - + 警告 - + U盘未插入或U盘根目录下的doc文件夹不存在! @@ -770,75 +760,80 @@ DigitalInput - + Form - + 9 - + 3 - + 8 - + - - + 退格 - + 1 - + 4 - + 0 - + + 清零 + + + + + Enter + + + + 5 - + 7 - + 2 - + 6 - - - 全选 - - DlgInputAddr @@ -1190,22 +1185,22 @@ - + 系统 - + U盘 - + ✓ - + ✕ @@ -1232,238 +1227,222 @@ - + mtDate: %1 - + mtInterval: %1 - + mtEndDate: %1 - + mtFlag: %1 - + timeoutDay: %1 - - + + 13.读卡器故障! - + %1/%2/%3 - - + 测试时间结束,准备关机 - + 开始自检,请等待60秒............... - - 开始自检,请等待%1秒............... + + 开始自检,请等待%1秒... - - + + 自检完成!!! - - - + + + 警告 - + 确认要刷墨水卡吗? - - + + 不需要刷墨水卡! - - + + 请先添加墨水再刷墨水卡! - - - + + 刷墨水卡成功! - + 确认要刷溶剂卡吗? - - + + 不需要刷溶剂卡! - - + + 请先添加溶剂再刷溶剂卡! - - - + + 刷溶剂卡成功! - + 确认要刷保养卡吗? - - - + + 刷保养卡成功! - - + + MAC无效卡! - + card data: %1 - + 无效卡,这张卡已经在%1时使用过 - + ink Warning at: %1 - + solvent Warning at: %1 - - 压力泄漏或压力传感器故障! - - - - - - + + 电机故障 - - 电机故障!!! - - - - - + + 回收槽到头 - - + 回收槽卡住或者回收槽开关时间设置错误 - + 错误!粘度计故障:检测不到上位灯 - + 压力过高,请检查管路是否堵塞,然后点击故障恢复按钮 - + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! - + 墨水液位报警超过48小时,机器无法正常打印,请先添加原厂墨水再刷墨水卡,以恢复喷码机的正常工作! - + 请刷溶剂卡,请使用原厂溶剂耗材,否则机器将在%1小时后禁止使用! - + 溶剂液位报警超过48小时,机器无法正常打印,请先添加溶剂再刷溶剂卡以恢复喷码机的正常工作! - + 保养期还有%1天到期,请及时保养,否则喷码机容易损坏 - + 保养期已超过%1天,请进行保养以恢复喷码机的正常使用 - + 刷卡倒计时起始时间文件不存在 - + 请稍候 - - + + 刷溶剂卡倒计时: %1 秒 @@ -1476,421 +1455,421 @@ - + 1 书 - + 2 输 - + 3 数 - + 4 属 - + 5 熟 - + 上一页 - + 下一页 - + ` - + 1 - + 2 - + 3 - + 4 - + 5 - + 6 - + 7 - + 8 - + 9 - + 0 - + - - + = - + 退格 - - + + 英文 - + q - + w - + e - + r - + t - + y - + u - + i - + o - + p - + [ - + ] - + \ - - + + 大写 - + a - + s - + d - + f - + g - + h - + j - + k - + l - + ; - + ' - + Enter - + Shift - + z - + x - + c - + v - + b - + n - + m - + , - + . - + / - + 上 - + 特殊字 - + 隐藏 - + Ctrl - + 删除 - + 行首 - + 行尾 - + 左 - + 下 - + 右 - - + + 错误 - + hanziDisplayLabels缺少初始化 - + warning - + myInputMethod is null - + 找不到输入法初始化文件 - + 小写 - + Tiếng Việt - + Russian - + Japanese - + 全选 - + 复制 - + 粘贴 - + 剪切 - + 后退 @@ -1941,16 +1920,16 @@ - - + + ← - - + + → @@ -1985,7 +1964,7 @@ - + 字符间距 @@ -2011,7 +1990,7 @@ - + ✕ @@ -2037,7 +2016,7 @@ - + TextLabel @@ -2052,72 +2031,72 @@ - + 粘度 - + 高压包 - + 隔膜位置 - + 压力 - + 墨线开关 - - 喷头盖开 + + 喷嘴逆清洗 - + 墨水缸满 - + 墨水液位 - + 溶剂液位 - + 回收故障 - + 粘度故障 - + 相位故障 - + 高压故障 - + 故障恢复 @@ -2132,64 +2111,69 @@ - - - - - + + + + + 警告 - - - + + + 无法打开文件 - - - - + + + + 提示 - + 是否确认将所有日志文件导出到U盘? - + U盘目录创建失败 - + U盘未插入或无法识别,请重新插拔设备! - + 成功导出到U盘 - + 选择历史记录文件 - + 是否确认将历史日志文件全部清除? - + 是否确认将当前日志全部清除? + + + 清洗中,界面锁死 + + MainInstruction @@ -2198,218 +2182,99 @@ Form + + + 网口通信 + + + + + 时间设置 + + - 文件 + 服务 + 文件 - - 重置所有计数器 - - - - - 建立新文件单 - - - - - 调入文件喷印 - - - - - 建立新文件 - - - - - 打开文件进行编辑 - - - - - 编辑当前文件 - - - - - 保存计数器 - - - - - 额外 - - - - - Delete extern text memory - - - - - 建立快捷功能键 - - - - - 产品计数器设置 - - - - - 直接启动喷印 - - - - - 脱离 - - - - + 图形编辑器 - - 管理器 - - - - - 设置 - - - - - 液压设置 - - - - - 启用口令保护 - - - - - 输入/输出设置 - - - - - 接口设置 - - - - - 口令设置 - - - - + 基本设置 - + 服务 - - 信息 - - - - - 输入/输出信号检验 - - - - - 数据记录 - - - - - 试喷 - - - - + 系统设置 - + 系统管理 - - 触摸校准 - - - - + 其他设置 - + 设置保养间隔 - - 液压/喷头 - - - - + 系统更新 - + 系统授权 - + ✕ - + mtDate1: %1 - + mtInterval1: %1 - + mtEndDate1: %1 - + mtFlog1: %1 - + 提示 - + RFID卡清零! @@ -2417,405 +2282,382 @@ MainWidget - + background-color:#6A7289; - + 编辑当前文件 - + 调入文件喷印 - + 主指令单 - + 管理器 - + 信息 - + background-color:#BCBFC4; - + background-color:#CACCC9; - - - + + background-color:#BBBBBD;border-radius:3px; - - - + + + 0 + + + + + 达到数量后停止: + + + + + 开始打印 + + + + color:#000000;font-size:18px; - - 喷头盖已盖上 - - - - - 墨剂开启 - - - - + 速度 米/分 - + color:#3CB371;font-size:18px; - + 当前 - + color:#E72F28;font-size:18px; - + 最大 - + color:#3CB371;font-size:24px; - + 0007.9 - + color:#E72F28;font-size:24px; - + 0020.3 - - color:#000000;font-size:18px;padding-left:20px; + + 停止打印 - + + 喷嘴开启 + + + + + 喷嘴关闭 + + + + 产品计数器 - - 00000000 - - - - + color:#000000;font-size:28px;font-weight:bold; - - 0000000000 - - - - - - - background-color:#C5C4BF;border-radius:3px; - - - - - - - - - + border:0px; - - - - - - - + + + + + + + 警告 - + 回收槽未关,是否关闭回收槽后关机! - + 是否确认关机? - - - - 正在准备关机,请等待%1秒............... - - - - - 准备关机...... - - - - - 关机失败!!! - - - - + 最多支持的列数目为:%1请减小信息长度. - - - - + + 变量数大于8个,某些变量将不起作用!!! - - + + 请减少信息中的变量(或计数器)数量. - + warning,界面上有变量未显示完全 - - - - + + + + 错误 - + 喷头盖未关,请先关喷头盖! - + 墨线未开,请先开墨线开关! - + 当前总列数 %1 ,支持的总列数为 %2,请减少打印串的长度 - + 打印耗时 %1ms ,触发间隔 :%2ms ,触发间隔至少应当大于打印耗时3ms - - 开始打印1 + + + 高压故障 - + + + 相位故障 + + + + + + 粘度故障 + + + + + + 回收故障 + + + + + + 溶液液位 + + + + + + 墨水液位 + + + + + + 墨水缸满 + + + + + + 墨线开关 + + + + + 正常 + + + + 提示 - + 随机码文本将展出到U盘,请插入U盘 - - 正在排气 ............... - - - - + 正在打开回收槽... - + 停止打开 - - + + 回收槽之前发生阻塞或回收槽时间设置错误,是否强制将当前位置设为到顶位置? - + 正在关闭回收槽... - + 停止关闭 - - + + %1.%2 - - 回收槽未到底!!!!!! - - - - - - - 正在喷印............... - - - - - - 暂停喷印............... - - - - - 喷头盖开, 喷印无法正常进行!!! - - - - + 墨水缸满报警 - + 墨水液位报警 - + 溶剂液位报警 - - + 高压故障,暂停打印 - + 高压故障,暂停打印. - + 高压故障,关回收槽 - - 高压故障,关回收槽和墨线 - - - - - + 回收故障,关闭回收槽,关墨线 - - 回收故障. - - - - + 回收异常,墨线可能偏离.(%1) - + 相位故障:飞行时间错误! - + 相位故障:相位检测错误! - - - + + 相位故障,准备关机 - - - + + 相位故障,暂停打印 - + 相位故障,屏蔽DAC输出 - - + 相位故障,屏蔽充电 @@ -3151,268 +2993,258 @@ p, li { white-space: pre-wrap; } - - 使用齿轮泵 - - - - - 使用回收泵 - - - - + 信息上下颠倒 - + 信息左右颠倒 - + PrintGo信号页1 - + 脉冲信号值: - + 无镜像打印 - + 自动水平翻转 - + 自动垂直翻转 - + 中心对称旋转 - + 镜象交替类型 - - - - + + + + 延时(毫秒): - + 镜像交替间隔 - - - + + + 触发延时(毫秒) - + 脉冲输出使能 - + 禁止电眼清零 - + 允许电眼复位 - + 允许电眼立即复位 - + 电眼清零 - + 字符宽度: - + 产生脉冲所需计数: - + 间隔模式: - + 行末<->行首 - + 行首<->行首 - + PrintGo信号页2 - - - - + + + + 重复间隔(毫秒) - + 重复次数 - - + + 封锁时间(毫秒) - + 同步器清零 - + 同步打印 - + 电眼信号来源 - - + + 内部 - - + + 外部 - + 光电边沿触发 - + 光电电平触发 - + GroupBox - + 延时触发 - + 编码器参数 - + 脉冲数/毫米 - + 脉冲数修正 - + 喷印间隔(毫米) - + 同步喷印模式 - + 按字符宽度 - + 按喷印比例 - + 同步器正反转打印 - + 同步器只正转打印 - + 同步器只反转打印 - + 同步器触发 - + 同步器来源 - + ✕ - + ✓ @@ -3427,54 +3259,54 @@ p, li { white-space: pre-wrap; } - + 提示:参数不正确 - + 要求:触发长度小于喷印间隔 - - - - + + + + 延时(毫米): - - - + + + 触发延时(毫米) - - + + 重复间隔(毫米) - - + + 封锁间隔(毫米) - + 封锁间隔(毫秒) - + 字符宽度 - + 喷印比例(%) @@ -3763,123 +3595,123 @@ p, li { white-space: pre-wrap; } - + ✓ - + ✕ - + 整体设置 - - - + + + 班时编号 - - + + 班时时间 - - + + 新建行 - + 标号 - + 1 - + 00:00 - + A - + 2 - + 08:09 - + B - + 3 - + 12:00 - + C - + 可选用的班次时间: - + 23 - - + + ← - - + + → - + 添加 - + 移除 - + hh:mm @@ -3915,15 +3747,30 @@ p, li { white-space: pre-wrap; } - + 采用预设值 - + 确认 + + + 预设值: + + + + + 当前值: + + + + + 采用当前值 + + SystemManage @@ -3933,540 +3780,475 @@ p, li { white-space: pre-wrap; } - + 手动控制泵阀 - + 齿轮泵关 - + 齿轮泵开 - + 回收槽开 - - - - - - - - - - + + + + + + + + + + 停止 - + 回收槽关 - + 粘度泵 - + 混合阀 - + 回收泵 - + 主墨泵 - - + + 压缩机 - + 泄压阀 - + 墨水阀 - + 循环阀 - - 切换键盘 - - - - - 更新字库 - - - - - 导出字库 - - - - + 环境配置 - - 烧录单片机软件 - - - - - 时间设置 - - - - - 导出配置到U盘 - - - - - 从U盘导入配置 - - - - + 重启 - + 排气 - - 烧录FPGA - - - - - 更新软件 - - - - + ✕ - - - - - + + + + + 自动 - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + 开 - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + 关 - - - - - - - - - - - + + + + + + + + + + 警告 - + 是否确认进入手动模式? - + 请先确认已经关闭回收槽,确认进入自动模式? - - - - + + + + 手动 - - - + + + 请先移开喷头盖! - - - - - - - - + + + + + + + + 启动 - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + 提示 - - - - + + + + 密码不正确! - + Application - + 是否确认更新字库? - + 没找到对应字库,更新失败! - + 更新字库成功,重启后生效! - + 恢复出厂设置成功,请重新关机上电 - + 校准触摸屏 - + 是否确认开始校准程序?请小心进行校准! - + 是否确认更新软件? - - - - - - - - - - + + + + + + + + + 错误 - + 更新失败! - + 软件更新成功,重启后生效! - + 找不到更新软件! - + 是否确认更新系统? - + 系统更新成功,重启后生效! - + 文件不存在! - + 如果开始清洗,务必确认回收槽已经打开10毫米以上,并且在一分钟后将停止清洗 - + 开始清洗 - + 停止清洗 - + 压力 - + autoclean cancel or status: - + (2/3) Cleaning - + (3/3) Cleaning - + 是否确认导出配置到U盘? - + 检测不到U盘 - + 成功导出配置到U盘 - + 是否确认从U盘导入配置? - + 配置文件/udisk/sysPara.bin不存在! - + 从U盘成功导入配置,重启后生效! - + autoclean start - - 是否确认导出字库到U盘? - - - - - U盘不可识别! - - - - - 字库导出完成! - - - - + 是否开始电机测试? - + Cancel - + 正在排气,是否停止? - + 确定要升级FPGA软件吗? - + 找不到 lib.tar! - + 无法删除旧的 lib.tar! - + 复制 tar 包失败! - + 解压失败,请检查权限! - + 移动库文件失败! - + 环境配置成功! - + 切换失败! - + 切换成功,重启后生效! - + 找不到软件! - + 找到多个软件,请删除多余的文件,只保留一个! - + 确定要升级单片机软件吗? - + 升级成功,请重启QtUI! - + 升级失败! @@ -4720,117 +4502,97 @@ p, li { white-space: pre-wrap; } - + 重置高压 - - 界面语言设置 - - - - + 喷嘴逆清洗 - + ✓ - + ✕ - - + + 错误 - + 实际频率不能为%1 - - + + 提示 - + 应用成功 - + 自动清洗时间约为一分钟,然后自动停止 - + 开始清洗 - + 停止清洗 - + 正在喷嘴逆清洗...... - + 清洗完成 - + Application - + 是否更新高压包电流数据? - + 喷头盖未关,请先关喷头盖! - + Oscillator voltage %1 --- 最长高电平时钟 %2 - + 最佳晶振电压完成 - - - Tiếng Việt(Vietnamese interface) - - - - - Chinese interface(中文界面) - - - - - English interface(英文界面) - - SystemUpdate @@ -4845,25 +4607,65 @@ p, li { white-space: pre-wrap; } - + 烧录FPGA - + 更新软件 - + + 界面语言设置 + + + + 烧录单片机软件 - + 更新字库 + + + 导出字库 + + + + + 警告 + + + + + 是否确认导出字库到U盘? + + + + + 错误 + + + + + U盘不可识别! + + + + + 提示 + + + + + 字库导出完成! + + TestPrintWidget @@ -4873,40 +4675,14 @@ p, li { white-space: pre-wrap; } - - QWidget { font-family: Arial; font-size: 12px; } - - - - - - - - - - - QPushButton { - border: 1px solid #cccccc; border-radius:8px; - padding: 10px; - font-size: 14px; - text-align: center; - } - QPushButton:checked { - border: 2px solid #0078d7; - background-color: #f0f8ff; - } - - - - - + + background-color:#828E9E; - - - + + QPushButton { background: qlineargradient(x1: 0.5, y1: 0, x2: 0.5, y2: 1, stop: 0 #6F9CD6, stop: 1 #FFFFFF); border: 1px solid #a0a0a0; @@ -4924,14 +4700,13 @@ p, li { white-space: pre-wrap; } - + background-color:#C4C5C9; - - - + + QPushButton { background-color: #ffffff; border: 1px solid #a8a8a8; @@ -4947,64 +4722,112 @@ p, li { white-space: pre-wrap; } - - QComboBox { - background-color: #e5e5e5; - border: 1px solid #a8a8a8; - border-radius: 2px; - padding: 4px 20px 4px 8px; - icon-size:60px 60px; - } - QComboBox::drop-down { width: 30px; } + + 文字 - - 5点(英) + + 条形码 - - 7点(英) + + 图标 - - 9点(英) + + 日期时间 - - 12点(英) + + 计数器 - - 16点(英) + + 轮班 - - 24点(英) + + 保存 - - 32点(英) + + 打印设置 - + + 图元设置 + + + + + 复制 + + + + + 粘贴 + + + + + 删除 + + + + + 5 dot + + + + + 7 dot + + + + + 9 dot + + + + + 12 dot + + + + + 16 dot + + + + + 24 dot + + + + + 32 dot + + + + UK - + US - + QLineEdit { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -5016,13 +4839,13 @@ p, li { white-space: pre-wrap; } - + JET2neo-TEST - - + + QPushButton { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -5041,19 +4864,19 @@ p, li { white-space: pre-wrap; } - + << - + >> - - - + + + QLabel { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -5066,20 +4889,20 @@ p, li { white-space: pre-wrap; } - + Y:9 - + X:105 - - - - + + + + QPushButton { background-color: #87CEEB; border: 1px solid #4682B4; @@ -5099,42 +4922,42 @@ p, li { white-space: pre-wrap; } - + ↑ - + ← - + → - + ↓ - + ID:1 - + ✓ - + 提示 - + 是否保存文件? @@ -5190,121 +5013,111 @@ p, li { white-space: pre-wrap; } - + 高度 - + 宽度 - + 图像裁剪 - + 缩小 - + 放大 - + 图像扩张 - + 保存为 - + 新建 - + 打开 - - - + + + 保存 - - 导入 - - - - - A - - - - + 编辑图案 - + ✕ - + 提示 - + 图片已经改变,是否保存? - + 放弃保存 - - - + + + 放大倍数:%1 - + 图片另存为... - + 另存为 - + 打开文件 - + 图片保存为... - + 导入文件 @@ -5481,18 +5294,18 @@ p, li { white-space: pre-wrap; } zkWidget - - + + 警告 - + 最大支持宽度:%1 高度:%2 当前请求:%3 x %4 - + 请新创建建图片 diff --git a/vena.ts b/vena.ts index 955903d..b308349 100644 --- a/vena.ts +++ b/vena.ts @@ -9,161 +9,151 @@ - + 整体设置 - + 变量类型 - - + + 计数器1 - - + + 计数器2 - + 数字个数: - + 1 - + 2 - + 3 - + 4 - + 5 - + 6 - + 7 - + 8 - - + + 字符间距 + + + + + + ← + + + + + + → + + + + + 增量值: - - + + 额外设置 + + + + + 如果预览与打印显示不正确,调整此设置可能恢复。 + + + + + 自定义字符宽度 + + + + + 当前值: - + 可变长度 - - + + 重复数: - + 小数点位数 - - - 重设值 - - - - - + + 结束值: - - + + 起始值: - - - 清零 - - - - - 代替 - - - - - 数据 - - - - - 下 - - - - - 预设值 - - - - - 上 - - - - - 类型 - - - - + ✓ - + ✕ @@ -176,198 +166,198 @@ - + ✓ - + ✕ - + 整体设置 - + 日期/时间 - + 内容 - + 有效期限 - - + + 天数 - + 月 - 精确到日 - + 月 - 精确到月 - + . - + : - + , - + / - + ; - + _ - - + + - - - + + 小时 - + 分钟 - + 秒钟 - - + + 月 - + 年2026 - + 日 - + 年中第几周 - + 年26 - - + + 周几 - + 空格 - + <------ - + + - - + + 代替 - + 名称 - + 数据 - + 年 - + Meridiem - + 类型 - + 上 - + 下 - + 预设值 - + 高级选项 @@ -757,12 +747,12 @@ - + 警告 - + U盘未插入或U盘根目录下的doc文件夹不存在! @@ -770,75 +760,80 @@ DigitalInput - + Form - + 9 - + 3 - + 8 - + - - + 退格 - + 1 - + 4 - + 0 - + + 清零 + + + + + Enter + + + + 5 - + 7 - + 2 - + 6 - - - 全选 - - DlgInputAddr @@ -1190,22 +1185,22 @@ - + 系统 - + U盘 - + ✓ - + ✕ @@ -1232,238 +1227,222 @@ - + mtDate: %1 - + mtInterval: %1 - + mtEndDate: %1 - + mtFlag: %1 - + timeoutDay: %1 - - + + 13.读卡器故障! - + %1/%2/%3 - - + 测试时间结束,准备关机 - + 开始自检,请等待60秒............... - - 开始自检,请等待%1秒............... + + 开始自检,请等待%1秒... - - + + 自检完成!!! - - - + + + 警告 - + 确认要刷墨水卡吗? - - + + 不需要刷墨水卡! - - + + 请先添加墨水再刷墨水卡! - - - + + 刷墨水卡成功! - + 确认要刷溶剂卡吗? - - + + 不需要刷溶剂卡! - - + + 请先添加溶剂再刷溶剂卡! - - - + + 刷溶剂卡成功! - + 确认要刷保养卡吗? - - - + + 刷保养卡成功! - - + + MAC无效卡! - + card data: %1 - + 无效卡,这张卡已经在%1时使用过 - + ink Warning at: %1 - + solvent Warning at: %1 - - 压力泄漏或压力传感器故障! - - - - - - + + 电机故障 - - 电机故障!!! - - - - - + + 回收槽到头 - - + 回收槽卡住或者回收槽开关时间设置错误 - + 错误!粘度计故障:检测不到上位灯 - + 压力过高,请检查管路是否堵塞,然后点击故障恢复按钮 - + 请刷墨水卡,请使用原厂墨水耗材,否则机器将在%1小时后禁止使用! - + 墨水液位报警超过48小时,机器无法正常打印,请先添加原厂墨水再刷墨水卡,以恢复喷码机的正常工作! - + 请刷溶剂卡,请使用原厂溶剂耗材,否则机器将在%1小时后禁止使用! - + 溶剂液位报警超过48小时,机器无法正常打印,请先添加溶剂再刷溶剂卡以恢复喷码机的正常工作! - + 保养期还有%1天到期,请及时保养,否则喷码机容易损坏 - + 保养期已超过%1天,请进行保养以恢复喷码机的正常使用 - + 刷卡倒计时起始时间文件不存在 - + 请稍候 - - + + 刷溶剂卡倒计时: %1 秒 @@ -1476,421 +1455,421 @@ - + 1 书 - + 2 输 - + 3 数 - + 4 属 - + 5 熟 - + 上一页 - + 下一页 - + ` - + 1 - + 2 - + 3 - + 4 - + 5 - + 6 - + 7 - + 8 - + 9 - + 0 - + - - + = - + 退格 - - + + 英文 - + q - + w - + e - + r - + t - + y - + u - + i - + o - + p - + [ - + ] - + \ - - + + 大写 - + a - + s - + d - + f - + g - + h - + j - + k - + l - + ; - + ' - + Enter - + Shift - + z - + x - + c - + v - + b - + n - + m - + , - + . - + / - + 上 - + 特殊字 - + 隐藏 - + Ctrl - + 删除 - + 行首 - + 行尾 - + 左 - + 下 - + 右 - - + + 错误 - + hanziDisplayLabels缺少初始化 - + warning - + myInputMethod is null - + 找不到输入法初始化文件 - + 小写 - + Tiếng Việt - + Russian - + Japanese - + 全选 - + 复制 - + 粘贴 - + 剪切 - + 后退 @@ -1941,16 +1920,16 @@ - - + + ← - - + + → @@ -1985,7 +1964,7 @@ - + 字符间距 @@ -2011,7 +1990,7 @@ - + ✕ @@ -2037,7 +2016,7 @@ - + TextLabel @@ -2052,72 +2031,72 @@ - + 粘度 - + 高压包 - + 隔膜位置 - + 压力 - + 墨线开关 - - 喷头盖开 + + 喷嘴逆清洗 - + 墨水缸满 - + 墨水液位 - + 溶剂液位 - + 回收故障 - + 粘度故障 - + 相位故障 - + 高压故障 - + 故障恢复 @@ -2132,64 +2111,69 @@ - - - - - + + + + + 警告 - - - + + + 无法打开文件 - - - - + + + + 提示 - + 是否确认将所有日志文件导出到U盘? - + U盘目录创建失败 - + U盘未插入或无法识别,请重新插拔设备! - + 成功导出到U盘 - + 选择历史记录文件 - + 是否确认将历史日志文件全部清除? - + 是否确认将当前日志全部清除? + + + 清洗中,界面锁死 + + MainInstruction @@ -2198,218 +2182,99 @@ Form + + + 网口通信 + + + + + 时间设置 + + - 文件 + 服务 + 文件 - - 重置所有计数器 - - - - - 建立新文件单 - - - - - 调入文件喷印 - - - - - 建立新文件 - - - - - 打开文件进行编辑 - - - - - 编辑当前文件 - - - - - 保存计数器 - - - - - 额外 - - - - - Delete extern text memory - - - - - 建立快捷功能键 - - - - - 产品计数器设置 - - - - - 直接启动喷印 - - - - - 脱离 - - - - + 图形编辑器 - - 管理器 - - - - - 设置 - - - - - 液压设置 - - - - - 启用口令保护 - - - - - 输入/输出设置 - - - - - 接口设置 - - - - - 口令设置 - - - - + 基本设置 - + 服务 - - 信息 - - - - - 输入/输出信号检验 - - - - - 数据记录 - - - - - 试喷 - - - - + 系统设置 - + 系统管理 - - 触摸校准 - - - - + 其他设置 - + 设置保养间隔 - - 液压/喷头 - - - - + 系统更新 - + 系统授权 - + ✕ - + mtDate1: %1 - + mtInterval1: %1 - + mtEndDate1: %1 - + mtFlog1: %1 - + 提示 - + RFID卡清零! @@ -2417,405 +2282,382 @@ MainWidget - + background-color:#6A7289; - + 编辑当前文件 - + 调入文件喷印 - + 主指令单 - + 管理器 - + 信息 - + background-color:#BCBFC4; - + background-color:#CACCC9; - - - + + background-color:#BBBBBD;border-radius:3px; - - - + + + 0 + + + + + 达到数量后停止: + + + + + 开始打印 + + + + color:#000000;font-size:18px; - - 喷头盖已盖上 - - - - - 墨剂开启 - - - - + 速度 米/分 - + color:#3CB371;font-size:18px; - + 当前 - + color:#E72F28;font-size:18px; - + 最大 - + color:#3CB371;font-size:24px; - + 0007.9 - + color:#E72F28;font-size:24px; - + 0020.3 - - color:#000000;font-size:18px;padding-left:20px; + + 停止打印 - + + 喷嘴开启 + + + + + 喷嘴关闭 + + + + 产品计数器 - - 00000000 - - - - + color:#000000;font-size:28px;font-weight:bold; - - 0000000000 - - - - - - - background-color:#C5C4BF;border-radius:3px; - - - - - - - - - + border:0px; - - - - - - - + + + + + + + 警告 - + 回收槽未关,是否关闭回收槽后关机! - + 是否确认关机? - - - - 正在准备关机,请等待%1秒............... - - - - - 准备关机...... - - - - - 关机失败!!! - - - - + 最多支持的列数目为:%1请减小信息长度. - - - - + + 变量数大于8个,某些变量将不起作用!!! - - + + 请减少信息中的变量(或计数器)数量. - + warning,界面上有变量未显示完全 - - - - + + + + 错误 - + 喷头盖未关,请先关喷头盖! - + 墨线未开,请先开墨线开关! - + 当前总列数 %1 ,支持的总列数为 %2,请减少打印串的长度 - + 打印耗时 %1ms ,触发间隔 :%2ms ,触发间隔至少应当大于打印耗时3ms - - 开始打印1 + + + 高压故障 - + + + 相位故障 + + + + + + 粘度故障 + + + + + + 回收故障 + + + + + + 溶液液位 + + + + + + 墨水液位 + + + + + + 墨水缸满 + + + + + + 墨线开关 + + + + + 正常 + + + + 提示 - + 随机码文本将展出到U盘,请插入U盘 - - 正在排气 ............... - - - - + 正在打开回收槽... - + 停止打开 - - + + 回收槽之前发生阻塞或回收槽时间设置错误,是否强制将当前位置设为到顶位置? - + 正在关闭回收槽... - + 停止关闭 - - + + %1.%2 - - 回收槽未到底!!!!!! - - - - - - - 正在喷印............... - - - - - - 暂停喷印............... - - - - - 喷头盖开, 喷印无法正常进行!!! - - - - + 墨水缸满报警 - + 墨水液位报警 - + 溶剂液位报警 - - + 高压故障,暂停打印 - + 高压故障,暂停打印. - + 高压故障,关回收槽 - - 高压故障,关回收槽和墨线 - - - - - + 回收故障,关闭回收槽,关墨线 - - 回收故障. - - - - + 回收异常,墨线可能偏离.(%1) - + 相位故障:飞行时间错误! - + 相位故障:相位检测错误! - - - + + 相位故障,准备关机 - - - + + 相位故障,暂停打印 - + 相位故障,屏蔽DAC输出 - - + 相位故障,屏蔽充电 @@ -3151,268 +2993,258 @@ p, li { white-space: pre-wrap; } - - 使用齿轮泵 - - - - - 使用回收泵 - - - - + 信息上下颠倒 - + 信息左右颠倒 - + PrintGo信号页1 - + 脉冲信号值: - + 无镜像打印 - + 自动水平翻转 - + 自动垂直翻转 - + 中心对称旋转 - + 镜象交替类型 - - - - + + + + 延时(毫秒): - + 镜像交替间隔 - - - + + + 触发延时(毫秒) - + 脉冲输出使能 - + 禁止电眼清零 - + 允许电眼复位 - + 允许电眼立即复位 - + 电眼清零 - + 字符宽度: - + 产生脉冲所需计数: - + 间隔模式: - + 行末<->行首 - + 行首<->行首 - + PrintGo信号页2 - - - - + + + + 重复间隔(毫秒) - + 重复次数 - - + + 封锁时间(毫秒) - + 同步器清零 - + 同步打印 - + 电眼信号来源 - - + + 内部 - - + + 外部 - + 光电边沿触发 - + 光电电平触发 - + GroupBox - + 延时触发 - + 编码器参数 - + 脉冲数/毫米 - + 脉冲数修正 - + 喷印间隔(毫米) - + 同步喷印模式 - + 按字符宽度 - + 按喷印比例 - + 同步器正反转打印 - + 同步器只正转打印 - + 同步器只反转打印 - + 同步器触发 - + 同步器来源 - + ✕ - + ✓ @@ -3427,54 +3259,54 @@ p, li { white-space: pre-wrap; } - + 提示:参数不正确 - + 要求:触发长度小于喷印间隔 - - - - + + + + 延时(毫米): - - - + + + 触发延时(毫米) - - + + 重复间隔(毫米) - - + + 封锁间隔(毫米) - + 封锁间隔(毫秒) - + 字符宽度 - + 喷印比例(%) @@ -3763,123 +3595,123 @@ p, li { white-space: pre-wrap; } - + ✓ - + ✕ - + 整体设置 - - - + + + 班时编号 - - + + 班时时间 - - + + 新建行 - + 标号 - + 1 - + 00:00 - + A - + 2 - + 08:09 - + B - + 3 - + 12:00 - + C - + 可选用的班次时间: - + 23 - - + + ← - - + + → - + 添加 - + 移除 - + hh:mm @@ -3915,15 +3747,30 @@ p, li { white-space: pre-wrap; } - + 采用预设值 - + 确认 + + + 预设值: + + + + + 当前值: + + + + + 采用当前值 + + SystemManage @@ -3933,540 +3780,475 @@ p, li { white-space: pre-wrap; } - + 手动控制泵阀 - + 齿轮泵关 - + 齿轮泵开 - + 回收槽开 - - - - - - - - - - + + + + + + + + + + 停止 - + 回收槽关 - + 粘度泵 - + 混合阀 - + 回收泵 - + 主墨泵 - - + + 压缩机 - + 泄压阀 - + 墨水阀 - + 循环阀 - - 切换键盘 - - - - - 更新字库 - - - - - 导出字库 - - - - + 环境配置 - - 烧录单片机软件 - - - - - 时间设置 - - - - - 导出配置到U盘 - - - - - 从U盘导入配置 - - - - + 重启 - + 排气 - - 烧录FPGA - - - - - 更新软件 - - - - + ✕ - - - - - + + + + + 自动 - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + 开 - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + 关 - - - - - - - - - - - + + + + + + + + + + 警告 - + 是否确认进入手动模式? - + 请先确认已经关闭回收槽,确认进入自动模式? - - - - + + + + 手动 - - - + + + 请先移开喷头盖! - - - - - - - - + + + + + + + + 启动 - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + 提示 - - - - + + + + 密码不正确! - + Application - + 是否确认更新字库? - + 没找到对应字库,更新失败! - + 更新字库成功,重启后生效! - + 恢复出厂设置成功,请重新关机上电 - + 校准触摸屏 - + 是否确认开始校准程序?请小心进行校准! - + 是否确认更新软件? - - - - - - - - - - + + + + + + + + + 错误 - + 更新失败! - + 软件更新成功,重启后生效! - + 找不到更新软件! - + 是否确认更新系统? - + 系统更新成功,重启后生效! - + 文件不存在! - + 如果开始清洗,务必确认回收槽已经打开10毫米以上,并且在一分钟后将停止清洗 - + 开始清洗 - + 停止清洗 - + 压力 - + autoclean cancel or status: - + (2/3) Cleaning - + (3/3) Cleaning - + 是否确认导出配置到U盘? - + 检测不到U盘 - + 成功导出配置到U盘 - + 是否确认从U盘导入配置? - + 配置文件/udisk/sysPara.bin不存在! - + 从U盘成功导入配置,重启后生效! - + autoclean start - - 是否确认导出字库到U盘? - - - - - U盘不可识别! - - - - - 字库导出完成! - - - - + 是否开始电机测试? - + Cancel - + 正在排气,是否停止? - + 确定要升级FPGA软件吗? - + 找不到 lib.tar! - + 无法删除旧的 lib.tar! - + 复制 tar 包失败! - + 解压失败,请检查权限! - + 移动库文件失败! - + 环境配置成功! - + 切换失败! - + 切换成功,重启后生效! - + 找不到软件! - + 找到多个软件,请删除多余的文件,只保留一个! - + 确定要升级单片机软件吗? - + 升级成功,请重启QtUI! - + 升级失败! @@ -4720,117 +4502,97 @@ p, li { white-space: pre-wrap; } - + 重置高压 - - 界面语言设置 - - - - + 喷嘴逆清洗 - + ✓ - + ✕ - - + + 错误 - + 实际频率不能为%1 - - + + 提示 - + 应用成功 - + 自动清洗时间约为一分钟,然后自动停止 - + 开始清洗 - + 停止清洗 - + 正在喷嘴逆清洗...... - + 清洗完成 - + Application - + 是否更新高压包电流数据? - + 喷头盖未关,请先关喷头盖! - + Oscillator voltage %1 --- 最长高电平时钟 %2 - + 最佳晶振电压完成 - - - Tiếng Việt(Vietnamese interface) - - - - - Chinese interface(中文界面) - - - - - English interface(英文界面) - - SystemUpdate @@ -4845,25 +4607,65 @@ p, li { white-space: pre-wrap; } - + 烧录FPGA - + 更新软件 - + + 界面语言设置 + + + + 烧录单片机软件 - + 更新字库 + + + 导出字库 + + + + + 警告 + + + + + 是否确认导出字库到U盘? + + + + + 错误 + + + + + U盘不可识别! + + + + + 提示 + + + + + 字库导出完成! + + TestPrintWidget @@ -4873,40 +4675,14 @@ p, li { white-space: pre-wrap; } - - QWidget { font-family: Arial; font-size: 12px; } - - - - - - - - - - - QPushButton { - border: 1px solid #cccccc; border-radius:8px; - padding: 10px; - font-size: 14px; - text-align: center; - } - QPushButton:checked { - border: 2px solid #0078d7; - background-color: #f0f8ff; - } - - - - - + + background-color:#828E9E; - - - + + QPushButton { background: qlineargradient(x1: 0.5, y1: 0, x2: 0.5, y2: 1, stop: 0 #6F9CD6, stop: 1 #FFFFFF); border: 1px solid #a0a0a0; @@ -4924,14 +4700,13 @@ p, li { white-space: pre-wrap; } - + background-color:#C4C5C9; - - - + + QPushButton { background-color: #ffffff; border: 1px solid #a8a8a8; @@ -4947,64 +4722,112 @@ p, li { white-space: pre-wrap; } - - QComboBox { - background-color: #e5e5e5; - border: 1px solid #a8a8a8; - border-radius: 2px; - padding: 4px 20px 4px 8px; - icon-size:60px 60px; - } - QComboBox::drop-down { width: 30px; } + + 文字 - - 5点(英) + + 条形码 - - 7点(英) + + 图标 - - 9点(英) + + 日期时间 - - 12点(英) + + 计数器 - - 16点(英) + + 轮班 - - 24点(英) + + 保存 - - 32点(英) + + 打印设置 - + + 图元设置 + + + + + 复制 + + + + + 粘贴 + + + + + 删除 + + + + + 5 dot + + + + + 7 dot + + + + + 9 dot + + + + + 12 dot + + + + + 16 dot + + + + + 24 dot + + + + + 32 dot + + + + UK - + US - + QLineEdit { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -5016,13 +4839,13 @@ p, li { white-space: pre-wrap; } - + JET2neo-TEST - - + + QPushButton { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -5041,19 +4864,19 @@ p, li { white-space: pre-wrap; } - + << - + >> - - - + + + QLabel { background-color: #e5e5e5; border: 1px solid #a8a8a8; @@ -5066,20 +4889,20 @@ p, li { white-space: pre-wrap; } - + Y:9 - + X:105 - - - - + + + + QPushButton { background-color: #87CEEB; border: 1px solid #4682B4; @@ -5099,42 +4922,42 @@ p, li { white-space: pre-wrap; } - + ↑ - + ← - + → - + ↓ - + ID:1 - + ✓ - + 提示 - + 是否保存文件? @@ -5190,121 +5013,111 @@ p, li { white-space: pre-wrap; } - + 高度 - + 宽度 - + 图像裁剪 - + 缩小 - + 放大 - + 图像扩张 - + 保存为 - + 新建 - + 打开 - - - + + + 保存 - - 导入 - - - - - A - - - - + 编辑图案 - + ✕ - + 提示 - + 图片已经改变,是否保存? - + 放弃保存 - - - + + + 放大倍数:%1 - + 图片另存为... - + 另存为 - + 打开文件 - + 图片保存为... - + 导入文件 @@ -5481,18 +5294,18 @@ p, li { white-space: pre-wrap; } zkWidget - - + + 警告 - + 最大支持宽度:%1 高度:%2 当前请求:%3 x %4 - + 请新创建建图片