From a7b131b059eab361dace02c4d6e885f13f11042e Mon Sep 17 00:00:00 2001 From: bobpan Date: Thu, 18 Feb 2021 16:04:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=8B=B1=E6=96=87=E7=BF=BB?= =?UTF-8?q?=E8=AF=91=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/tpMain/Result2Ui.h | 31 + src/userCtrl/quserinfo_en.ts | 333 +++ tpvs17/tpMain/QCamSettingDlg.cpp | 2 +- tpvs17/tpMain/QChannelMgrDlg.cpp | 4 +- tpvs17/tpMain/QDebugDlg.cpp | 10 +- tpvs17/tpMain/QModelMgrDlg.cpp | 170 +- tpvs17/tpMain/QSettingDlg.cpp | 2 +- tpvs17/tpMain/QSystemSettingDlg.cpp | 229 +- tpvs17/tpMain/QTimeMgrDlg.cpp | 46 +- tpvs17/tpMain/lpGlobalData.cpp | 2 +- tpvs17/tpMain/lpMain.cpp | 2 +- tpvs17/tpMain/lpMainWin.cpp | 244 +- tpvs17/tpMain/lpmain_en.ts | 2453 +++++++++++++++++++ tpvs17/tpMain/tpMain.vcxproj | 4 + tpvs17/tpMain/tpMain.vcxproj.filters | 13 + tpvs17/tpMain/tpmain_en.qm | Bin 17842 -> 0 bytes tpvs17/tpMain/tpmain_en.ts | 3349 -------------------------- tpvs17/tpMain/tpmain_zh.qm | Bin 39222 -> 0 bytes tpvs17/tpMain/tpmain_zh.ts | 3257 ------------------------- tpvs17/wheel.sln | 20 +- 20 files changed, 3191 insertions(+), 6980 deletions(-) create mode 100644 src/tpMain/Result2Ui.h create mode 100644 src/userCtrl/quserinfo_en.ts create mode 100644 tpvs17/tpMain/lpmain_en.ts delete mode 100644 tpvs17/tpMain/tpmain_en.qm delete mode 100644 tpvs17/tpMain/tpmain_en.ts delete mode 100644 tpvs17/tpMain/tpmain_zh.qm delete mode 100644 tpvs17/tpMain/tpmain_zh.ts diff --git a/src/tpMain/Result2Ui.h b/src/tpMain/Result2Ui.h new file mode 100644 index 0000000..ac9ddde --- /dev/null +++ b/src/tpMain/Result2Ui.h @@ -0,0 +1,31 @@ +#ifndef _H_RESULT2UI_H_ +#define _H_RESULT2UI_H_ + +#include "qpixmap.h" +#include "qimage.h" +class Result2Ui +{ +public: + Result2Ui() { + m_strModel = ""; + m_dScore = 0; + m_dDiameter = 0; + m_dThickness = 0; + m_dRunTime = 0; + m_dMinDis = 1000; + m_channel = 0; + }; + + double m_dDiameter; + double m_dThickness; + double m_dRunTime; + QPixmap m_pixResult; + QPixmap m_pixSrc; + QString m_strModel; + double m_dScore; + double m_dMinDis; + int m_channel; +}; + +#endif + diff --git a/src/userCtrl/quserinfo_en.ts b/src/userCtrl/quserinfo_en.ts new file mode 100644 index 0000000..dca74ac --- /dev/null +++ b/src/userCtrl/quserinfo_en.ts @@ -0,0 +1,333 @@ + + + + + QLoginDlg + + + 用户登录 + User LoginIn + User LoginIn + + + + 登录 + LoginIn + LoginIn + + + + 取消 + Cancel + Cancel + + + + 用户名: + UserName: + UserName: + + + + 密 码: + Password: + Password: + + + + QLoginModify + + + QLoginModify + QLoginModify + QLoginModify + + + + 旧密码 + Old Passwd + Old Passwd + + + + 新密码 + New Passwd + New Passwd + + + + 密码确认 + Passwd Sure + Passwd Sure + + + + UserName: + UserName: + UserName: + + + + 取消 + Cancel + Cancel + + + + 修改 + Modify + Modify + + + + QObject + + + <html><head / ><body><p><span style = color:#ff0000;>用户名不能为空!!!< / span>< / p>< / body>< / html> + <html><head / ><body><p><span style = color:#ff0000;>username don't empty!!!< / span>< / p>< / body>< / html> + <html><head / ><body><p><span style = color:#ff0000;>username don't empty!!!< / span>< / p>< / body>< / html> + + + + + + + + + + + + + + + 错误警告 + Warning + Warning + + + + <html><head / ><body><p><span style = color:#ff0000;>密码不能为空!!!< / span>< / p>< / body>< / html> + <html><head / ><body><p><span style = color:#ff0000;>password don't empty!!!< / span>< / p>< / body>< / html> + <html><head / ><body><p><span style = color:#ff0000;>password don't empty!!!< / span>< / p>< / body>< / html> + + + + <html><head / ><body><p><span style = color:#00ff00;>登录成功< / span>< / p>< / body>< / html> + <html><head / ><body><p><span style = color:#00ff00;>Success< / span>< / p>< / body>< / html> + <html><head / ><body><p><span style = color:#00ff00;>Success< / span>< / p>< / body>< / html> + + + + <html><head / ><body><p><span style = color:#ff0000;>密码错误!!!< / span>< / p>< / body>< / html> + <html><head / ><body><p><span style = color:#ff0000;>Password Error!!!< / span>< / p>< / body>< / html> + <html><head / ><body><p><span style = color:#ff0000;>Password Error!!!< / span>< / p>< / body>< / html> + + + + + 用户名 + UserName + UserName + + + + 等级 + Level + Level + + + + 未登录 + LoginOut + LoginOut + + + + + + 你还没登录,请登录或请联系管理员! + Please connect Manager! + Please connect Manager! + + + + 你当前没有权限添加用户,请登录! + Don't have power to add user! + Don't have power to add user! + + + + 添加新用户 + add user + add user + + + + %1 添加完成!!! + %1 add finish!!! + %1 add finish!!! + + + + 请选中你要删除的用户! + please select User! + please select User! + + + + 你当前没有权限删除root用户,请联系超超级管理员! + Please connect Manager! + Please connect Manager! + + + + 你当前没有权限删除自己的账户,请联系管理员! + Please connect Manager! + Please connect Manager! + + + + 确定删除用户: %1 ? + Delete User: %1 ? + Delete User: %1 ? + + + + %1 已删除! + %1 deleted! + %1 deleted! + + + + 你没有选中需要修改的用户,请联系管理员! + Please connect Manager! + Please connect Manager! + + + + 修改用户信息 + Modify UserInfo + Modify UserInfo + + + + %1 修改完成!!! + %1 Modify finish!!! + %1 Modify finish!!! + + + + 职位 + Post + Post + + + + 权限等级 + Level + Level + + + + QUserAddNew + + + QUserAddNew + QUserAddNew + QUserAddNew + + + + 确认 + OK + OK + + + + 取消 + Cancel + Cancel + + + + 设置默认密码 + Set Default + Set Default + + + + 默认密码123456 + default pwd123456 + default pwd123456 + + + + 密码输入: + passwd: + Passwd: + + + + 密码确认: + passwd: + Passwd: + + + + 用户名: + UserName: + UserName: + + + + 权限等级: + Level: + Level: + + + + QUserManagerDlg + + + 用户管理 + User Manage + User Manage + + + + 当前登录用户: + Current User: + Current User: + + + + UserName + UserName + UserName + + + + 修改 + Modify + Modify + + + + 删除用户 + Delete + Delete + + + + 添加用户 + Add + Add + + + + TextLabel + TextLabel + TextLabel + + + diff --git a/tpvs17/tpMain/QCamSettingDlg.cpp b/tpvs17/tpMain/QCamSettingDlg.cpp index fde31be..f901c2a 100644 --- a/tpvs17/tpMain/QCamSettingDlg.cpp +++ b/tpvs17/tpMain/QCamSettingDlg.cpp @@ -1,4 +1,4 @@ -#include "QCamSettingDlg.h" +#include "QCamSettingDlg.h" QCamSettingDlg::QCamSettingDlg(QWidget *parent) : QWidget(parent) diff --git a/tpvs17/tpMain/QChannelMgrDlg.cpp b/tpvs17/tpMain/QChannelMgrDlg.cpp index bd129c6..59a6fd7 100644 --- a/tpvs17/tpMain/QChannelMgrDlg.cpp +++ b/tpvs17/tpMain/QChannelMgrDlg.cpp @@ -1,6 +1,6 @@ -#include "QChannelMgrDlg.h" +#include "QChannelMgrDlg.h" #pragma execution_character_set("utf-8") -/*ͨ*/ +/*通道管理*/ QChannelMgrDlg::QChannelMgrDlg(QWidget *parent) : QWidget(parent) { diff --git a/tpvs17/tpMain/QDebugDlg.cpp b/tpvs17/tpMain/QDebugDlg.cpp index 79fc98d..a35c23a 100644 --- a/tpvs17/tpMain/QDebugDlg.cpp +++ b/tpvs17/tpMain/QDebugDlg.cpp @@ -1,8 +1,8 @@ -#include "QDebugDlg.h" +#include "QDebugDlg.h" #include "IWheelModel.h" #include "QFile" #include "QTextStream" -/*Դ*/ +/*调试窗口*/ QDebugDlg::QDebugDlg(QWidget *parent) : QWidget(parent) { @@ -94,12 +94,12 @@ Q_SLOT void QDebugDlg::onButtonClicked() emit sgTriggerCam(); } else if ("Dlp_StartDetect_button" == strObj) { - if (ui.Dlp_StartDetect_button->text() == tr("ʼģ")) { - ui.Dlp_StartDetect_button->setText(tr("ֹͣ")); + if (ui.Dlp_StartDetect_button->text() == tr("开始模拟检测")) { + ui.Dlp_StartDetect_button->setText(tr("停止")); m_simuliter.start(2000); } else { - ui.Dlp_StartDetect_button->setText(tr("ʼģ")); + ui.Dlp_StartDetect_button->setText(tr("开始模拟检测")); m_simuliter.stop(); } } diff --git a/tpvs17/tpMain/QModelMgrDlg.cpp b/tpvs17/tpMain/QModelMgrDlg.cpp index bcc1967..0b7de94 100644 --- a/tpvs17/tpMain/QModelMgrDlg.cpp +++ b/tpvs17/tpMain/QModelMgrDlg.cpp @@ -1,4 +1,4 @@ -#include "QModelMgrDlg.h" +#include "QModelMgrDlg.h" #include "ProgressView.h" #include #include @@ -12,7 +12,7 @@ #include "QSettings.h" #include "ICompareModel.h" -#define WS_PICSIZE 129 //!>ŴС +#define WS_PICSIZE 129 //!>缩放大小 #define WS_PICSIZELIST_ITEM 100 #define MODEL_UI_ICON_NONE ":/image/none.jpg" #define MODEL_UI_ICON_LEAPER ":/image/leaper" @@ -29,7 +29,7 @@ enum EM_TYPE_PROCESSMODEL #pragma execution_character_set("utf-8") using namespace std; -/*ģ*/ +/*模板管理*/ QTime m_ticktimer; QModelMgrDlg::QModelMgrDlg(IWheelCtrl *ptr, QWidget *parent) : QWidget(parent),m_pCtrl(ptr) @@ -128,12 +128,12 @@ Q_SLOT void QModelMgrDlg::onAddPic2Model() { QString strModel = m_pShowImgList->property("model").toString(); if (strModel.isEmpty()) { - onMessageBox(QMessageBox::Information, tr("ʾ"), tr("ѡһҪ׷ͼͺţ"), 0); + onMessageBox(QMessageBox::Information, tr("提示"), tr("请选择一个您要追加图像的型号!"), 0); return; } if (!m_pModelMgr->getAllModelName().contains(strModel)) { - onMessageBox(QMessageBox::Information, tr("ʾ"), tr("ѡһҪ׷ͼͺţ"), 0); + onMessageBox(QMessageBox::Information, tr("提示"), tr("请选择一个您要追加图像的型号!"), 0); return; } QStringList lstFiles = FileOper::selectFiles(QString("%1 Add Picture").arg(strModel), "Picture(*.bmp *.jpg *.png)", m_strAddPicPath);// m_pCtrl->appRoot() + "//Data//"); @@ -144,8 +144,8 @@ Q_SLOT void QModelMgrDlg::onAddPic2Model() int size = lstFiles.size(); int nSuc = 0; int oldImgsCnt = m_pModelMgr->getModel(strModel)->getTempImage()->getImgCount(); - ProgressView progress(tr("ͼ"), - tr("ͼ,Ժ....."), size, MODEL_UI_ICON_LEAPER); + ProgressView progress(tr("加载图像"), + tr("图像加载中,请稍后....."), size, MODEL_UI_ICON_LEAPER); for (int nIndex = 0; nIndex < size; ++nIndex) { QString filepath = lstFiles.value(nIndex); if (appImage2Widget(filepath, strModel)) { @@ -154,7 +154,7 @@ Q_SLOT void QModelMgrDlg::onAddPic2Model() qApp->processEvents(); } else { - emit(sgShowMsg(tr("ʧܣӴⱳͼƬΪģ壡"))); + emit(sgShowMsg(tr("添加失败,不能添加带检测背景的图片作为模板!!!"))); break; } } @@ -169,7 +169,7 @@ Q_SLOT void QModelMgrDlg::onAddPic2Model() ui.ModelMgr_model_Repet_spinBox->setValue(IRepet); } } - progress.setLabel(tr("")); + progress.setLabel(tr("加载完成")); qApp->processEvents(); progress.finish(); } @@ -178,12 +178,12 @@ Q_SLOT void QModelMgrDlg::onModifyModel() { QString strModel = m_pShowImgList->property("model").toString(); if (strModel.isEmpty()) { - onMessageBox(QMessageBox::Information, tr("ʾ"), tr("ѡһҪ޸ĵͺţ"), 0); + onMessageBox(QMessageBox::Information, tr("提示"), tr("请选择一个您要修改的型号!"), 0); return; } if (!m_pModelMgr->getAllModelName().contains(strModel)) { - onMessageBox(QMessageBox::Information, tr("ʾ"), tr("ѡһҪ޸ĵͺţ"), 0); + onMessageBox(QMessageBox::Information, tr("提示"), tr("请选择一个您要修改的型号!"), 0); return; } IWheelModel*pModel = m_pModelMgr->getModel(strModel); @@ -207,46 +207,46 @@ Q_SLOT void QModelMgrDlg::onModifyModel() pModel->getImageComModel()->save2file(strS/*string((const char *)templatepath.toLocal8Bit())*/); m_pModelMgr->modModel(strModel); m_pModelMgr->saveModel(strModel); - QString str = m_pCtrl->getUserName() + ":" + QString("%1:%2 %3").arg(tr("޸ģ")).arg(strModel).arg(tr("IJ")); + QString str = m_pCtrl->getUserName() + ":" + QString("%1:%2 %3").arg(tr("修改了模板")).arg(strModel).arg(tr("的参数")); m_pCtrl->addLog(str, emTypeUseState); //m_modLib = true; - emit sgShowMsg(tr("޸ijɹ")); + emit sgShowMsg(tr("修改成功!")); } Q_SLOT void QModelMgrDlg::onDelModel() { QString strModel = m_pShowImgList->property("model").toString(); if (strModel.isEmpty()) { - onMessageBox(QMessageBox::Information, tr("ʾ"), tr("ѡһҪɾͺ"), 0); + onMessageBox(QMessageBox::Information, tr("提示"), tr("请选择一个您要删除的型号"), 0); return; } if (!m_pModelMgr->getAllModelName().contains(strModel)) { - onMessageBox(QMessageBox::Information, tr("ʾ"), tr("ѡһҪɾͺ"), 0); + onMessageBox(QMessageBox::Information, tr("提示"), tr("请选择一个您要删除的型号"), 0); return; } - QString str = m_pCtrl->getUserName() + ":" + tr("ɾģ尴ť"); + QString str = m_pCtrl->getUserName() + ":" + tr("按下了删除模板按钮"); m_pCtrl->addLog(str, emTypeUseState); - if (onMessageBox(QMessageBox::Information, tr("ʾ"), QString("%1 %2 %3").arg(tr("Ƿɾͺ")).arg(strModel).arg(tr("Ʒģ")), 1) == false) + if (onMessageBox(QMessageBox::Information, tr("提示"), QString("%1 %2 %3").arg(tr("是否删除型号")).arg(strModel).arg(tr("产品模板")), 1) == false) return; m_pModelLists->removeModel(strModel); m_pModelMgr->delModel(strModel); m_pModelLists->update2AllModels("NG"); emit(m_pCtrl->sgModelChanged()); emit(sgGenalData(QVariant("removeModel"), QVariant(strModel))); - str = m_pCtrl->getUserName() + ":" + QString("%1:%2").arg(tr("ɾģ")).arg(strModel); + str = m_pCtrl->getUserName() + ":" + QString("%1:%2").arg(tr("删除了模板")).arg(strModel); m_pCtrl->addLog(str, emTypeUseState); QStringList strFilter = m_pCtrl->getAllModelMapPtr()->keys(); strFilter.removeAll("NG"); m_pModelLists->setModelList(strFilter); - QString m_str = QString("%1 %2 %3").arg(tr("")).arg(strFilter.size()).arg(tr("ͺ")); + QString m_str = QString("%1 %2 %3").arg(tr("共")).arg(strFilter.size()).arg(tr("个型号")); ui.ModelMgr_label_Model_number->setText(m_str); onClearShow(); } Q_SLOT void QModelMgrDlg::onAddModel() { - QString str = m_pCtrl->getUserName() + ":" + tr("ģ尴ť"); + QString str = m_pCtrl->getUserName() + ":" + tr("按下了添加模板按钮"); m_pCtrl->addLog(str, emTypeUseState); QAddModel m_AddModel(this); @@ -256,7 +256,7 @@ Q_SLOT void QModelMgrDlg::onAddModel() m_AddModel.setAttribute(Qt::WA_ShowModal, true); m_AddModel.SetClearData(); m_AddModel.setWindowIcon(QIcon(MODEL_UI_ICON_LEAPER)); - m_AddModel.setWindowTitle(tr("ƷϢ")); + m_AddModel.setWindowTitle(tr("产品信息设置")); m_AddModel.setFocus(); if (m_AddModel.exec() == QDialog::Accepted) { QMap m_map = m_AddModel.getData(); @@ -275,7 +275,7 @@ Q_SLOT void QModelMgrDlg::onAddModel() m_pModelMgr->saveModel(pModel->getModelID()); m_pModelLists->update2AllModels("NG"); emit m_pCtrl->sgModelChanged(); - QString str = m_pCtrl->getUserName() + ":" + QString("%1:%2").arg(tr("һµģ")).arg(pModel->getModelID()); + QString str = m_pCtrl->getUserName() + ":" + QString("%1:%2").arg(tr("添加了一个新的模型")).arg(pModel->getModelID()); m_pCtrl->addLog(str, emTypeUseState); onShowModelInfo(pModel->getModelID()); onShowModelPic(pModel->getModelID()); @@ -283,7 +283,7 @@ Q_SLOT void QModelMgrDlg::onAddModel() QStringList strFilter = m_pCtrl->getAllModelMapPtr()->keys(); strFilter.removeAll("NG"); m_pModelLists->setModelList(strFilter); - QString m_str = QString("%1 %2 %3").arg(tr("")).arg(strFilter.size()).arg(tr("ͺ")); + QString m_str = QString("%1 %2 %3").arg(tr("共")).arg(strFilter.size()).arg(tr("个型号")); ui.ModelMgr_label_Model_number->setText(m_str); } } @@ -294,7 +294,7 @@ Q_SLOT void QModelMgrDlg::onTrainModel() if (!m_trainOneTsk->isRunning()) { QString strModel = m_pShowImgList->property("model").toString(); if (strModel.isEmpty()) { - onMessageBox(QMessageBox::Information, tr("ʾ"), tr("ѡһҪѵͺţ"), 0); + onMessageBox(QMessageBox::Information, tr("提示"), tr("请选择一个您要训练的型号!"), 0); return; } m_strTrainModel = strModel; @@ -305,7 +305,7 @@ Q_SLOT void QModelMgrDlg::onTrainModel() else { m_trainOneTsk->stop(); m_trainOneTsk->quit(); - emit sgShowMsg(tr("ѵģ߳δ˳Ե")); + emit sgShowMsg(tr("训练模板线程未退出,请稍等")); } } } @@ -314,7 +314,7 @@ Q_SLOT void QModelMgrDlg::onTrainAllModels() { if (m_trainAllTsk) { if (!m_trainAllTsk->isRunning()) { - if (onMessageBox(QMessageBox::Warning, tr("ʾ"), tr("ͺģѵڼϵͳļ⹦ֱܽģѵɣȫѵģ彫Ҫܳʱ䣬ڼ佫ܽǷִУ"), 1) == false) + if (onMessageBox(QMessageBox::Warning, tr("提示"), tr("将对所有型号模板进行重新训练,期间系统的检测功能将不能正常运行直到模板训练完成,全部重新训练模板将需要很长时间,期间将不能进行其他工作,是否继续执行?"), 1) == false) return; m_ticktimer.start(); m_trainAllTsk->InitStopFlag(); @@ -323,7 +323,7 @@ Q_SLOT void QModelMgrDlg::onTrainAllModels() else { m_trainAllTsk->stop(); m_trainAllTsk->quit(); - emit sgShowMsg(tr("ѵģ߳δ˳Ե")); + emit sgShowMsg(tr("训练模板线程未退出,请稍等")); } } } @@ -339,15 +339,15 @@ Q_SLOT void QModelMgrDlg::onItemDoubleClicked(QListWidgetItem * item) // return; QString strModel = m_pShowImgList->property("model").toString(); QString itemText = item->text(); - QString strWarning = tr("ȷɾͼ?"); - if (onMessageBox(QMessageBox::Warning, tr("ģͼƬɾ"), strWarning, 1) == false) + QString strWarning = tr("确定删除该图像?"); + if (onMessageBox(QMessageBox::Warning, tr("模板图片删除"), strWarning, 1) == false) return; TempImage *pImg = m_pModelMgr->getTmpImage(strModel); if (pImg) { pImg->remove(itemText); } delete item; - QString m_str = QString("%1 %2 %3").arg(tr("")).arg(m_pShowImgList->count()).arg(tr("ͼ")); + QString m_str = QString("%1 %2 %3").arg(tr("共")).arg(m_pShowImgList->count()).arg(tr("个图像")); ui.label_imgNum->setText(m_str); } // else if ("ModelMgr_listWidget_tab2" == objName) @@ -386,7 +386,7 @@ Q_SLOT void QModelMgrDlg::onPrograssShow(QString title, QString strValue, int si } break; case emPross_enable: - onMessageBox(QMessageBox::Information, tr("ʾ"), strValue, 0); + onMessageBox(QMessageBox::Information, tr("提示"), strValue, 0); break; case emPross_Disable: break; @@ -400,13 +400,13 @@ Q_SLOT void QModelMgrDlg::setValue(int value) Q_SLOT void QModelMgrDlg::onDelAllModels() { - if (onMessageBox(QMessageBox::Warning, tr(""), tr("ɾģģ壬Ƿ"), 1) == false) + if (onMessageBox(QMessageBox::Warning, tr("警告"), tr("即将删除模板库里的所有模板,是否继续?"), 1) == false) return; - if (onMessageBox(QMessageBox::Warning, tr("ʾ"), tr("ٴȷϣǷȫɾ"), 1) == false) + if (onMessageBox(QMessageBox::Warning, tr("提示"), tr("再次确认,是否全部删除?"), 1) == false) return; QStringList ModeStrList = m_pModelMgr->getAllModelName(); if (ModeStrList.size() <= 0) { - onMessageBox(QMessageBox::Warning, tr("ʾ"), tr("ûģ!!!"), 0); + onMessageBox(QMessageBox::Warning, tr("提示"), tr("没有模板!!!"), 0); return; } for (int nIndex = 0; nIndex < ModeStrList.size(); nIndex++) { @@ -420,7 +420,7 @@ Q_SLOT void QModelMgrDlg::onDelAllModels() } } onClearShow(); - onMessageBox(QMessageBox::Warning, tr("ʾ"), tr("ȫɾ!!!"), 0); + onMessageBox(QMessageBox::Warning, tr("提示"), tr("全部删除完成!!!"), 0); } Q_SLOT void QModelMgrDlg::onChangeModelName() @@ -428,7 +428,7 @@ Q_SLOT void QModelMgrDlg::onChangeModelName() QString strModel = m_pShowImgList->property("model").toString(); if (strModel.isEmpty()) { - onMessageBox(QMessageBox::Information, tr("ʾ"), tr("ѡһҪ޸ĵͺţ"), 0); + onMessageBox(QMessageBox::Information, tr("提示"), tr("请选择一个您要修改的型号!"), 0); return; } QModNamedlg dlg(this); @@ -482,14 +482,14 @@ Q_SLOT void QModelMgrDlg::onTextChanged(const QString& str) models.removeAll("NG"); if (str.isEmpty() || str == "*") { m_pModelLists->setModelList(models); - QString m_str = QString("%1 %2 %3").arg(tr("")).arg(models.size()).arg(tr("ͺ")); + QString m_str = QString("%1 %2 %3").arg(tr("共")).arg(models.size()).arg(tr("个型号")); ui.ModelMgr_label_Model_number->setText(m_str); //m_FindModel = models; } else { QStringList strFilter = models.filter(str); m_pModelLists->setModelList(strFilter); - QString m_str = QString("%1 %2 ͺ").arg(tr("")).arg(strFilter.size()).arg(tr("ͺ")); + QString m_str = QString("%1 %2 个型号").arg(tr("共")).arg(strFilter.size()).arg(tr("个型号")); ui.ModelMgr_label_Model_number->setText(m_str); } } @@ -528,22 +528,22 @@ Q_SLOT void QModelMgrDlg::onShowModelInfo(QString str) updateWidget(str); int IImgNum = m_pShowImgList->count(); - QString strShow = QString("%1 %2 %3").arg(tr("")).arg(IImgNum).arg(tr("ͼ")); + QString strShow = QString("%1 %2 %3").arg(tr("共")).arg(IImgNum).arg(tr("个图像")); if (IImgNum > 0 && IImgNum < nGlobalMinImgs) - strShow += QString(",%1 %2 %3.").arg(tr("ͼ")).arg(nGlobalMinImgs).arg(tr(",뼰ʱѵ")); + strShow += QString(",%1 %2 %3.").arg(tr("图像数量少于")).arg(nGlobalMinImgs).arg(tr("个,请及时补充训练样本")); ui.label_imgNum->setText(strShow); /* if (m_WarningMsg) { int nTypeModel = m_pModelMgr->getModel(str)->getImageModel(); if (nTypeModel == 0) - m_WarningMsg->setText(tr("ģѵɹʹ")); + m_WarningMsg->setText(tr("该模板训练成功,可以正常使用")); else if (nTypeModel == 1) - m_WarningMsg->setText(tr("ģûѵûͼ")); + m_WarningMsg->setText(tr("该模板没有训练,并且没有图像")); else if (nTypeModel == 2) - m_WarningMsg->setText(tr("ģѵʧܣģͼƬǷ͵ͼģǷظ")); + m_WarningMsg->setText(tr("该模板训练失败,请检查模板图片中是否有其他类型的图像或该模板是否被重复添加")); else - m_WarningMsg->setText(QString("")); + m_WarningMsg->setText(QString("。。。。。。")); }*/ } @@ -602,17 +602,17 @@ void QModelMgrDlg::TrainAllTskFunc() { QStringList lstAll = m_pModelMgr->getAllModelName(); QMap> mpAllImage = m_pModelMgr->getAllModelImage(); - emit sgPrograssShow(tr("ģ½"), tr("ڳʼģ Ҫѵ%1ģ,Ժ.....").arg(lstAll.size()), lstAll.size(), emPross_Init); + emit sgPrograssShow(tr("模板更新进度"), tr("正在初始化所有模板 共需要训练%1个模板,请稍后.....").arg(lstAll.size()), lstAll.size(), emPross_Init); int nIndex = 0; for (; nIndex < lstAll.size() && (!m_trainAllTsk->getStopFlag()); nIndex++) { - emit sgPrograssShow(tr("ģ½"), "", nIndex, emPross_SetValue); + emit sgPrograssShow(tr("模板更新进度"), "", nIndex, emPross_SetValue); QString m_modelName = lstAll.at(nIndex); TempImage *pImg = m_pModelMgr->getTmpImage(m_modelName); if (!pImg) { continue; } - QString str = tr("ѵ%1ģ %2/%3,Ժ.....").arg(m_modelName).arg(nIndex + 1).arg(m_pModelMgr->getAllModelName().size()); - emit sgPrograssShow(tr("ģ½"), str, lstAll.size(), emPross_SetLable); + QString str = tr("正在训练%1的模板 已完成%2/%3,请稍后.....").arg(m_modelName).arg(nIndex + 1).arg(m_pModelMgr->getAllModelName().size()); + emit sgPrograssShow(tr("模板更新进度"), str, lstAll.size(), emPross_SetLable); IWheelModel *pModel = m_pModelMgr->getModel(m_modelName); std::vector mMat = pImg->getImgVector(); ICompareModel *m_compareModel = pModel->getImageComModel(); @@ -667,8 +667,8 @@ void QModelMgrDlg::TrainAllTskFunc() pModel->setPicPath(n_Pic_path); m_pModelMgr->modModel(m_modelName); } - str = tr("%1ģȡ %2/%3,Ժ.....").arg(m_modelName).arg(nIndex + 1).arg(m_pModelMgr->getAllModelName().size()); - emit sgPrograssShow(tr("ģ½"), str, lstAll.size(), emPross_SetLable); + str = tr("%1的模板获取特征 已完成%2/%3,请稍后.....").arg(m_modelName).arg(nIndex + 1).arg(m_pModelMgr->getAllModelName().size()); + emit sgPrograssShow(tr("模板更新进度"), str, lstAll.size(), emPross_SetLable); m_compareModel->setIsEnableCache(true); if (m_trainAllTsk->getStopFlag()) @@ -704,14 +704,14 @@ void QModelMgrDlg::TrainAllTskFunc() ui.ModelMgr_modelpic_lable->setPixmap(pix.scaled(129, 129)); emit sgTrainShowInfo(m_modelName); - str = tr("%1ģѵ %2/%3,Ժ.....").arg(m_modelName).arg(nIndex + 1).arg(m_pModelMgr->getAllModelName().size()); - emit sgPrograssShow(tr("ģ½"), "", nIndex, emPross_SetValue); + str = tr("%1的模板训练完成 已完成%2/%3,请稍后.....").arg(m_modelName).arg(nIndex + 1).arg(m_pModelMgr->getAllModelName().size()); + emit sgPrograssShow(tr("模板更新进度"), "", nIndex, emPross_SetValue); } if (!m_trainAllTsk->getStopFlag()) { - emit sgPrograssShow(tr("ģ½"), "", nIndex, emPross_Finish); - emit sgPrograssShow(tr("ģ½"), tr("ȫģɣ%1s").arg(m_ticktimer.elapsed() / 1000.0), nIndex, emPross_enable); - QString str = m_pCtrl->getUserName() + ":" + tr("ȫģѵ%1ģ").arg(lstAll.size()); + emit sgPrograssShow(tr("模板更新进度"), "", nIndex, emPross_Finish); + emit sgPrograssShow(tr("模板更新进度"), tr("全部模板更新完成!%1s").arg(m_ticktimer.elapsed() / 1000.0), nIndex, emPross_enable); + QString str = m_pCtrl->getUserName() + ":" + tr("对全部模板进行了重新训练,共%1个模板").arg(lstAll.size()); m_pCtrl->addLog(str, emTypeUseState); } } @@ -721,29 +721,29 @@ void QModelMgrDlg::TrainOneTskFunc() if (m_strTrainModel.isEmpty()) return; int m_step = 5; - QString str = tr("ģ׼Ժ....."); - emit sgPrograssShow(tr("ģѵ"), str, m_step, emPross_Init); + QString str = tr("模板正在准备请稍后....."); + emit sgPrograssShow(tr("模板训练进度"), str, m_step, emPross_Init); IWheelModel*pModel = m_pModelMgr->getModel(m_strTrainModel); if (!pModel) { return; } - emit sgPrograssShow(tr("ģѵ"), str, 0, emPross_SetValue); + emit sgPrograssShow(tr("模板训练进度"), str, 0, emPross_SetValue); if (m_trainOneTsk->getStopFlag()) return; TempImage *pTempImg = pModel->getTempImage(); std::vector m_MatVec = pTempImg->getImgVector(); if (m_MatVec.size() <= 0) { - emit sgPrograssShow(tr("ģѵ"), tr("%1ͺûͼƬѵ").arg(m_strTrainModel), 6, emPross_enable); - emit sgPrograssShow(tr("ģѵ"), tr("%1ͺûͼƬѵ").arg(m_strTrainModel), 6, emPross_Finish); + emit sgPrograssShow(tr("模板训练进度"), tr("%1型号没有图片不能训练!").arg(m_strTrainModel), 6, emPross_enable); + emit sgPrograssShow(tr("模板训练进度"), tr("%1型号没有图片不能训练!").arg(m_strTrainModel), 6, emPross_Finish); return; } if (m_trainOneTsk->getStopFlag()) return; - /*Ҫʾ ˵ģѵ*/ - emit sgPrograssShow(tr("ģѵ"), str, 1, emPross_SetValue); + /*这里需要加载提示 说明模板正在训练*/ + emit sgPrograssShow(tr("模板训练进度"), str, 1, emPross_SetValue); ICompareModel *m_compareModel = pModel->getImageComModel(); //std::vector firstFalseSample = m_pModelMgr->getFirstImgFromFalse(pModel->getModelID()); @@ -790,7 +790,7 @@ void QModelMgrDlg::TrainOneTskFunc() m_compareModel->calculateAllParams(m_MatVec); if (m_trainOneTsk->getStopFlag()) return; - emit sgPrograssShow(tr("ģѵ"), str, 2, emPross_SetValue); + emit sgPrograssShow(tr("模板训练进度"), str, 2, emPross_SetValue); hubBase::mkdir(m_pCtrl->appRoot() + "\\pattern"); QString templatepath = m_pCtrl->appRoot() + "\\pattern\\template\\"; hubBase::mkdir(templatepath); @@ -812,9 +812,9 @@ void QModelMgrDlg::TrainOneTskFunc() } if (m_trainOneTsk->getStopFlag()) return; - emit sgPrograssShow(tr("ģѵ"), str, 3, emPross_SetValue); - emit sgPrograssShow(tr("ģѵ"), str, 4, emPross_SetValue); - emit sgPrograssShow(tr("ģѵ"), tr("%1ģ ڻȡֵ,Ժ....").arg(m_strTrainModel), 4, emPross_SetLable); + emit sgPrograssShow(tr("模板训练进度"), str, 3, emPross_SetValue); + emit sgPrograssShow(tr("模板训练进度"), str, 4, emPross_SetValue); + emit sgPrograssShow(tr("模板训练进度"), tr("%1的模板 正在获取特征值,请稍后....").arg(m_strTrainModel), 4, emPross_SetLable); m_compareModel->setIsEnableCache(false); //if (pModel->getDiameter() && pModel->getThickness()) @@ -833,11 +833,11 @@ void QModelMgrDlg::TrainOneTskFunc() m_compareModel->save2file(strS/*string((const char *)templatepath.toLocal8Bit())*/); if (m_trainOneTsk->getStopFlag()) return; - emit sgPrograssShow(tr("ģѵ"), str, 6, emPross_SetValue); - emit sgPrograssShow(tr("ģѵ"), str, 6, emPross_Finish); - emit sgPrograssShow(tr("ģѵ"), tr("ѵɣ%1s").arg(m_ticktimer.elapsed() / 1000.0), 6, emPross_enable); + emit sgPrograssShow(tr("模板训练进度"), str, 6, emPross_SetValue); + emit sgPrograssShow(tr("模板训练进度"), str, 6, emPross_Finish); + emit sgPrograssShow(tr("模板训练进度"), tr("训练完成!%1s").arg(m_ticktimer.elapsed() / 1000.0), 6, emPross_enable); emit sgTrainShowInfo(m_strTrainModel); - str = m_pCtrl->getUserName() + ":" + tr("ѵģ:%1").arg(m_strTrainModel); + str = m_pCtrl->getUserName() + ":" + tr("训练了模板:%1").arg(m_strTrainModel); m_pCtrl->addLog(str, emTypeUseState); m_strTrainModel.clear(); } @@ -853,7 +853,7 @@ void QModelMgrDlg::updateWidget(QString str) m_pShowImgList->clear(); m_pShowImgList->setProperty("model", str); /* - ܴڴй¶ ʱδҵİ취 + 这里可能存在内存泄露 暂时未找到解决的办法 */ m_pShowImgList->setIconSize(QSize(WS_PICSIZELIST_ITEM, WS_PICSIZELIST_ITEM)); m_pShowImgList->setAcceptDrops(false); @@ -873,14 +873,14 @@ void QModelMgrDlg::updateWidget(QString str) bool QModelMgrDlg::appImage2Widget(QString strPath, QString strModel) { - //ͼ+ + //抠图+ cv::Mat dst = imread(string((const char *)strPath.toLocal8Bit()), 0); if (dst.empty()) { return false; } if (dst.rows >= 900 || dst.cols >= 900) return false; - //ʾ + //显示 QString strFileName = strModel + "_" + hubBase::genDateTime("MMddhhmmzzz"); cv::Mat show; cv::resize(dst, show, cv::Size(int(dst.cols * 1.5) / 4 * 4, dst.rows*1.5)); @@ -906,7 +906,7 @@ bool QModelMgrDlg::appImage2Widget(QString strPath, QString strModel) cv::imwrite(string((const char *)strPath2.toLocal8Bit()), dst); //cv::imwrite(strPath2.toLatin1().data(), dst); pModel->getTempImage()->add(dst, strFileName, strPath2); - QString m_str = QString("%1 %2 %3").arg(tr("")).arg(m_pShowImgList->count()).arg(tr("ͼ")); + QString m_str = QString("%1 %2 %3").arg(tr("共")).arg(m_pShowImgList->count()).arg(tr("个图像")); ui.label_imgNum->setText(m_str); return true; } @@ -981,43 +981,43 @@ bool QModelMgrDlg::onMessageBox(QMessageBox::Icon ntype, QString strTitle, QStri button = QMessageBox::Cancel; QMessageBox infobox(ntype, strTitle, strAtl, QMessageBox::Ok | button, this); infobox.setWindowIcon(QIcon(":/image/leaper")); - infobox.setButtonText(QMessageBox::Ok, tr("ȷ")); - infobox.setButtonText(QMessageBox::Cancel, tr("ȡ")); + infobox.setButtonText(QMessageBox::Ok, tr("确认")); + infobox.setButtonText(QMessageBox::Cancel, tr("取消")); return (infobox.exec() == QMessageBox::Ok); } Q_SLOT void QModelMgrDlg::onButtonClicked() { QString strObj = sender()->objectName(); - if ("m_pbAdd" == strObj)//ͺ + if ("m_pbAdd" == strObj)//添加新型号 { onAddModel(); } - else if ("m_pbDel" == strObj)//ɾͺ + else if ("m_pbDel" == strObj)//删除型号 { onDelModel(); } - else if ("m_pbMod" == strObj)//޸ͺ + else if ("m_pbMod" == strObj)//修改型号 { onModifyModel(); } - else if ("m_pbModName" == strObj)//޸ͺ + else if ("m_pbModName" == strObj)//修改型号名 { onChangeModelName(); } - else if ("m_pbTrain" == strObj)//ѵ + else if ("m_pbTrain" == strObj)//训练单个 { onTrainModel(); } - else if ("m_pbTrainAll" == strObj)//ѵȫ + else if ("m_pbTrainAll" == strObj)//训练全部 { onTrainAllModels(); } - else if ("m_pbAddPic" == strObj)//ͼƬ + else if ("m_pbAddPic" == strObj)//添加图片 { onAddPic2Model(); } - else if ("m_pbDelAll" == strObj)//ɾ + else if ("m_pbDelAll" == strObj)//删除所有 { onDelAllModels(); } @@ -1031,7 +1031,7 @@ void QModelMgrDlg::showEvent(QShowEvent *event) strModels.removeAll("NG"); m_pModelLists->setModelList(strModels); - QString m_str = QString("%1 %2 ͺ").arg(tr("")).arg(strModels.size()).arg(tr("ͺ")); + QString m_str = QString("%1 %2 个型号").arg(tr("共")).arg(strModels.size()).arg(tr("个型号")); ui.ModelMgr_label_Model_number->setText(m_str); } } diff --git a/tpvs17/tpMain/QSettingDlg.cpp b/tpvs17/tpMain/QSettingDlg.cpp index 4e87266..fe2ab0a 100644 --- a/tpvs17/tpMain/QSettingDlg.cpp +++ b/tpvs17/tpMain/QSettingDlg.cpp @@ -1,4 +1,4 @@ -#include "QSettingDlg.h" +#include "QSettingDlg.h" QSettingDlg::QSettingDlg(QWidget *parent) : QWidget(parent) diff --git a/tpvs17/tpMain/QSystemSettingDlg.cpp b/tpvs17/tpMain/QSystemSettingDlg.cpp index fd25b7f..418e004 100644 --- a/tpvs17/tpMain/QSystemSettingDlg.cpp +++ b/tpvs17/tpMain/QSystemSettingDlg.cpp @@ -1,5 +1,6 @@ -#include "QSystemSettingDlg.h" -#include "QDir" +#include "QSystemSettingDlg.h" +#include +#include #include "QCheckBox" #include "QLabel" #include "QSpinBox" @@ -10,24 +11,24 @@ #include #include "InfoFile.h" -#pragma execution_character_set("utf-8") + #define DEVELOP_UI_CHECK_SAVE_GOOD "SaveGoodcheckBox" #define DEVELOP_UI_CHECK_SAVE_BAD "SaveBadcheckBox" #define DEVELOP_UI_CHECK_SAVE_CUTGOOD "SaveCutGoodcheckBox" #define DEVELOP_UI_CHECK_SAVE_CUTBAD "SaveCutBadcheckBox" #define DEVELOP_UI_CHECK_CHKBOXALL2A "chkBoxAll2A" +#pragma execution_character_set("utf-8") +const QString DEVELOP_DETECT_CAMERE_VIRSUAL = QObject::tr("虚拟相机触发"); +const QString DEVELOP_DETECT_CAMERE_TRUE = QObject::tr("硬件相机触发"); +const QString DEVELOP_DETECT_DEBUG_NOUSER = QObject::tr("调试免登陆"); +const QString DEVELOP_DETECT_DEBUG_USER = QObject::tr("正常工作模式"); -#define DEVELOP_DETECT_CAMERE_VIRSUAL tr("") -#define DEVELOP_DETECT_CAMERE_TRUE tr("Ӳ") -#define DEVELOP_DETECT_DEBUG_NOUSER tr("½") -#define DEVELOP_DETECT_DEBUG_USER tr("ģʽ") - -#define DEVELOP_DETECT_CAM_OUTTRIGER tr("") -#define DEVELOP_DETECT_CAM_SOFTER tr("") +const QString DEVELOP_DETECT_CAM_OUTTRIGER = QObject::tr("传感器触发"); +const QString DEVELOP_DETECT_CAM_SOFTER = QObject::tr("软件触发"); -#define DEVELOP_PLC_TRIGER_DOWM tr("½ش") -#define DEVELOP_PLC_TRIGER_UP tr("ش") +const QString DEVELOP_PLC_TRIGER_DOWM = QObject::tr("下降沿触发"); +const QString DEVELOP_PLC_TRIGER_UP = QObject::tr("上升沿触发"); QSystemSettingDlg::QSystemSettingDlg(QWidget *parent) : QWidget(parent) @@ -35,19 +36,19 @@ QSystemSettingDlg::QSystemSettingDlg(QWidget *parent) ui.setupUi(this); m_setting = new QSettings(".\\user\\systemfile.ini", QSettings::IniFormat); readSettingFile(); - m_listwidgetItemStr.append(tr("豸")); - m_listwidgetItemStr.append(tr("ͼ")); - m_listwidgetItemStr.append(tr("PLC")); - m_listwidgetItemStr.append(tr("Ʋ")); - m_listwidgetItemStr.append(tr("߼")); + m_listwidgetItemStr.append(tr("相关设备配置")); + m_listwidgetItemStr.append(tr("检测图像设置")); + m_listwidgetItemStr.append(tr("PLC相关设置")); + m_listwidgetItemStr.append(tr("报警灯测试")); + m_listwidgetItemStr.append(tr("高级功能")); { InitTreeWidget(ui.treeWidget); - addComRoot(ui.treeWidget, m_listwidgetItemStr.at(0));//豸 - addPicRoot(ui.treeWidget, m_listwidgetItemStr.at(1));//ͼ - addPLCRoot(ui.treeWidget, m_listwidgetItemStr.at(2));//PLC - addLightRoot(ui.treeWidget, m_listwidgetItemStr.at(3));//Ʋ + addComRoot(ui.treeWidget, m_listwidgetItemStr.at(0));//相关设备配置 + addPicRoot(ui.treeWidget, m_listwidgetItemStr.at(1));//检测图像设置 + addPLCRoot(ui.treeWidget, m_listwidgetItemStr.at(2));//PLC相关设置 + addLightRoot(ui.treeWidget, m_listwidgetItemStr.at(3));//报警灯测试 ui.treeWidget->expandAll(); - addSuperRoot(ui.treeWidget, m_listwidgetItemStr.at(4));//߼ + addSuperRoot(ui.treeWidget, m_listwidgetItemStr.at(4));//高级功能 } { @@ -151,8 +152,8 @@ bool QSystemSettingDlg::InitTreeWidget(QTreeWidget* pTreewidget) if (pTreewidget == NULL) return false; QStringList header; - header.append(tr("")); - header.append(tr("ֵ")); + header.append(tr("属性")); + header.append(tr("值")); pTreewidget->setHeaderLabels(header); pTreewidget->header()->setStretchLastSection(true); pTreewidget->setColumnCount(2); @@ -165,8 +166,8 @@ bool QSystemSettingDlg::InitTreeWidget(QTreeWidget* pTreewidget) void QSystemSettingDlg::addComRoot(class QTreeWidget *pTreewidget, QString strName /*= QString()*/) { -// QTreeWidgetItem *m_ComItems = new QTreeWidgetItem(pTreewidget, QStringList(tr("豸"))); -// pStationSetButton = new QPushButton(tr("ҳ")); +// QTreeWidgetItem *m_ComItems = new QTreeWidgetItem(pTreewidget, QStringList(tr("相关设备配置"))); +// pStationSetButton = new QPushButton(tr("打开配置页面")); // pTreewidget->setItemWidget(m_ComItems, 1, pStationSetButton); // m_ComItems->setSizeHint(1, QSize(100, 30)); // pStationSetButton->setObjectName("pStationSetButton"); @@ -174,7 +175,7 @@ void QSystemSettingDlg::addComRoot(class QTreeWidget *pTreewidget, QString strNa // m_listObj.append(pStationSetButton); // m_TreeItemMap.insert(strName, m_ComItems); - QTreeWidgetItem *pLanguage = new QTreeWidgetItem(pTreewidget, QStringList(tr(""))); + QTreeWidgetItem *pLanguage = new QTreeWidgetItem(pTreewidget, QStringList(tr("语言"))); m_Language = new QComboBox; pTreewidget->setItemWidget(pLanguage, 1, m_Language); m_TreeItemMap.insert("language", pLanguage); @@ -201,8 +202,8 @@ QStringList QSystemSettingDlg::getDirNames(QString strPath) return strDirNames; } dir.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); - dir.setSorting(QDir::DirsFirst); // ļ - // תһList + dir.setSorting(QDir::DirsFirst); // 文件夹优先 + // 转换成一个List QFileInfoList list = dir.entryInfoList(); if (list.size() < 1) { @@ -213,7 +214,7 @@ QStringList QSystemSettingDlg::getDirNames(QString strPath) { QFileInfo fileInfo = list.at(i); QString tt = fileInfo.fileName(); - // ļ + // 如果是文件夹 bool bisDir = fileInfo.isDir(); if (bisDir) { @@ -226,65 +227,65 @@ QStringList QSystemSettingDlg::getDirNames(QString strPath) void QSystemSettingDlg::addPicRoot(QTreeWidget *pTreewidget, QString strName) { - QTreeWidgetItem *m_RootItems = new QTreeWidgetItem(pTreewidget, QStringList(tr("ͼ"))); + QTreeWidgetItem *m_RootItems = new QTreeWidgetItem(pTreewidget, QStringList(tr("检测图像设置"))); m_TreeItemMap.insert(strName, m_RootItems); m_RootItems->setSizeHint(1, QSize(100, 30)); - picitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ⱳ")))); - picitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ͼ")))); - picitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ͼ")))); - picitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ԭͼ")))); - picitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ԭͼ")))); - picitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("")))); - picitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ͼ񱣴·")))); - picitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ñ·")))); - picitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ͼ·")))); - picitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("浱ǰ")))); + picitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("检测背景更换")))); + picitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("抠图后")))); + picitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("抠图后")))); + picitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("原图")))); + picitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("原图")))); + picitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("检测结果")))); + picitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("图像保存路径")))); + picitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("设置保存路径")))); + picitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("打开图像路径")))); + picitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("保存当前设置")))); m_RootItems->addChildren(picitems); QCheckBox *m_saveImgRes_good = new QCheckBox; - m_saveImgRes_good->setText(tr("ƥͼ")); + m_saveImgRes_good->setText(tr("保存已匹配图")); m_saveImgRes_good->setObjectName("m_saveImgRes_good"); connect(m_saveImgRes_good, SIGNAL(stateChanged(int)), this, SLOT(onCheckstateChanged(int))); m_saveImgRes_good->setChecked(DetectState::instance()->saveCutGood == (int)true); QCheckBox *m_saveImgRes_bad = new QCheckBox; - m_saveImgRes_bad->setText(tr("ƥͼ")); + m_saveImgRes_bad->setText(tr("保存无匹配图")); m_saveImgRes_bad->setObjectName("m_saveImgRes_bad"); connect(m_saveImgRes_bad, SIGNAL(stateChanged(int)), this, SLOT(onCheckstateChanged(int))); m_saveImgRes_bad->setChecked(DetectState::instance()->saveCutBad == (int)true); QCheckBox *m_saveImgSrc_good = new QCheckBox; - m_saveImgSrc_good->setText(tr("ƥͼ")); + m_saveImgSrc_good->setText(tr("保存已匹配图")); m_saveImgSrc_good->setObjectName("m_saveImgSrc_good"); connect(m_saveImgSrc_good, SIGNAL(stateChanged(int)), this, SLOT(onCheckstateChanged(int))); m_saveImgSrc_good->setChecked(DetectState::instance()->saveGood == (int)true); QCheckBox *m_saveImgSrc_bad = new QCheckBox; - m_saveImgSrc_bad->setText(tr("ƥͼ")); + m_saveImgSrc_bad->setText(tr("保存无匹配图")); m_saveImgSrc_bad->setObjectName("m_saveImgSrc_bad"); connect(m_saveImgSrc_bad, SIGNAL(stateChanged(int)), this, SLOT(onCheckstateChanged(int))); m_saveImgSrc_bad->setChecked(DetectState::instance()->saveBad == (int)true); QCheckBox *m_ResAll2A = new QCheckBox; - m_ResAll2A->setText(tr("ȫȥAͨ")); + m_ResAll2A->setText(tr("轮毂全去A通道")); m_ResAll2A->setObjectName("m_ResAll2A"); connect(m_ResAll2A, SIGNAL(stateChanged(int)), this, SLOT(onCheckstateChanged(int))); m_ResAll2A->setChecked(DetectState::instance()->m_bObjAll2A == (int)true); - QPushButton* pChangeBGbp = new QPushButton(tr("鿴ⱳ")); + QPushButton* pChangeBGbp = new QPushButton(tr("查看检测背景")); connect(pChangeBGbp, SIGNAL(clicked()), this, SLOT(onChangeBackground())); m_pLbShowPath = new QLabel; m_pLbShowPath->setText(DetectState::instance()->m_SaveImgDirPath); - QPushButton *pbSetSavePath = new QPushButton(tr("ñ·")); + QPushButton *pbSetSavePath = new QPushButton(tr("设置保存路径")); pbSetSavePath->setObjectName("pbSetSavePath"); connect(pbSetSavePath, SIGNAL(clicked()), this, SLOT(onOpenDataPath())); - QPushButton *pbOpenImgPath = new QPushButton(tr("ͼ·")); + QPushButton *pbOpenImgPath = new QPushButton(tr("打开图像路径")); pbOpenImgPath->setObjectName("pbOpenImgPath"); connect(pbOpenImgPath, SIGNAL(clicked()), this, SLOT(onOpenDataPath())); - QPushButton* pSavePara = new QPushButton(tr("")); + QPushButton* pSavePara = new QPushButton(tr("保存参数")); pSavePara->setObjectName("pSavePara"); connect(pSavePara, SIGNAL(clicked()), this, SLOT(onTreeWidgetButton())); @@ -324,22 +325,22 @@ void QSystemSettingDlg::addPicRoot(QTreeWidget *pTreewidget, QString strName) void QSystemSettingDlg::addPLCRoot(QTreeWidget *pTreewidget, QString strName) { - QTreeWidgetItem *m_PLCItems = new QTreeWidgetItem(pTreewidget, QStringList(tr("PLC"))); + QTreeWidgetItem *m_PLCItems = new QTreeWidgetItem(pTreewidget, QStringList(tr("PLC相关设置"))); m_TreeItemMap.insert(strName, m_PLCItems); m_PLCItems->setSizeHint(1, QSize(100, 30)); - PLCitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("")))); - PLCitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("˲(ms)")))); - PLCitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ʱ(ms)")))); - PLCitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("(ms)")))); - PLCitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ԴϨʱʱ(ms)")))); - PLCitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("")))); - PLCitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ֽʱ(ms)")))); - PLCitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ӳʱ")))); - PLCitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ʱǷʾϢ")))); - PLCitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ǷԶ")))); - PLCitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("Ƿ񱣴泬ʱ־")))); + PLCitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("保存设置")))); + PLCitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("传感器触发滤波(ms)")))); + PLCitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("相机触发延时(ms)")))); + PLCitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("相机触发脉宽(ms)")))); + PLCitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("光源熄灭延时时间(ms)")))); + PLCitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("传感器触发类型")))); + PLCitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("保持结果时长(ms)")))); + PLCitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("连接超时次数")))); + PLCitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("超时是否显示信息")))); + PLCitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("是否自动重启服务器")))); + PLCitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("是否保存超时日志")))); m_PLCItems->addChildren(PLCitems); - QPushButton *savePLCpara = new QPushButton(tr("Ͳ")); + QPushButton *savePLCpara = new QPushButton(tr("发送并保存")); m_PLCTrigerFilter = new QSpinBox(); m_PLCTrigerFilter->setMinimum(1); m_PLCTrigerFilter->setMaximum(65536); @@ -377,26 +378,26 @@ void QSystemSettingDlg::addPLCRoot(QTreeWidget *pTreewidget, QString strName) m_PLC_RestartSeverCount = new QSpinBox(); m_PLC_RestartSeverCount->setMinimum(1); m_PLC_RestartSeverCount->setMaximum(65536); - m_PLC_RestartSeverCount->setToolTip(tr("ʱnκԶ")); + m_PLC_RestartSeverCount->setToolTip(tr("超时提醒n次后自动重启服务")); m_PLC_RestartSeverCount->setValue(DetectState::instance()->m_PLC_RestartSeverCount); QCheckBox *m_PLC_ShowTimerOutMsg = new QCheckBox; - m_PLC_ShowTimerOutMsg->setText(tr("Ƿʾʾ")); - m_PLC_ShowTimerOutMsg->setText(tr("ѡͨųʱʱʾϢ")); + m_PLC_ShowTimerOutMsg->setText(tr("是否显示提示")); + m_PLC_ShowTimerOutMsg->setText(tr("勾选后通信超时时会显示提醒信息")); m_PLC_ShowTimerOutMsg->setObjectName("m_PLC_ShowTimerOutMsg"); connect(m_PLC_ShowTimerOutMsg, SIGNAL(stateChanged(int)), this, SLOT(onCheckstateChanged(int))); m_PLC_ShowTimerOutMsg->setChecked(DetectState::instance()->m_PLC_ShowTimerOutMsg == (int)true); QCheckBox *m_PLC_IsResServer = new QCheckBox; - m_PLC_IsResServer->setText(tr("ǷԶ")); - m_PLC_IsResServer->setToolTip(tr("ѡͨųʱﵽϵͳԶPLCԶ")); + m_PLC_IsResServer->setText(tr("是否自动重启服务器")); + m_PLC_IsResServer->setToolTip(tr("勾选后通信超时次数达到后,系统将自动重启服务,PLC会自动重新连接")); m_PLC_IsResServer->setObjectName("m_PLC_IsResServer"); connect(m_PLC_IsResServer, SIGNAL(stateChanged(int)), this, SLOT(onCheckstateChanged(int))); m_PLC_IsResServer->setChecked(DetectState::instance()->m_PLC_IsResServer == (int)true); QCheckBox *m_PLC_SaveMsgInLog = new QCheckBox; - m_PLC_SaveMsgInLog->setText(tr("Ϣϵͳ־")); - m_PLC_SaveMsgInLog->setToolTip(tr("ѡʾʱϢԶ浽ϵͳ־Уڲѯ")); + m_PLC_SaveMsgInLog->setText(tr("保存信息到系统日志")); + m_PLC_SaveMsgInLog->setToolTip(tr("勾选后表示超时信息将自动保存到系统日志中,便于查询")); m_PLC_SaveMsgInLog->setObjectName("m_PLC_SaveMsgInLog"); connect(m_PLC_SaveMsgInLog, SIGNAL(stateChanged(int)), this, SLOT(onCheckstateChanged(int))); m_PLC_SaveMsgInLog->setChecked(DetectState::instance()->m_PLC_SaveMsgInLog == (int)true); @@ -437,18 +438,18 @@ void QSystemSettingDlg::addPLCRoot(QTreeWidget *pTreewidget, QString strName) } void QSystemSettingDlg::addLightRoot(QTreeWidget *pTreewidget, QString strName) { - QTreeWidgetItem *m_LightItems = new QTreeWidgetItem(pTreewidget, QStringList(tr("Ʋ"))); + QTreeWidgetItem *m_LightItems = new QTreeWidgetItem(pTreewidget, QStringList(tr("报警灯测试"))); m_TreeItemMap.insert(strName, m_LightItems); m_LightItems->setSizeHint(1, QSize(100, 30)); - lightitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("")))); - lightitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("̵")))); - lightitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("Ƶ")))); - lightitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("")))); + lightitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("红灯")))); + lightitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("绿灯")))); + lightitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("黄灯")))); + lightitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("蜂鸣")))); m_LightItems->addChildren(lightitems); - QPushButton *redLight = new QPushButton(tr("һ")); - QPushButton *grenLight = new QPushButton(tr("̵һ")); - QPushButton *yellLight = new QPushButton(tr("Ƶһ")); - QPushButton *beeLight = new QPushButton(tr("һ")); + QPushButton *redLight = new QPushButton(tr("红灯闪一下")); + QPushButton *grenLight = new QPushButton(tr("绿灯闪一下")); + QPushButton *yellLight = new QPushButton(tr("黄灯闪一下")); + QPushButton *beeLight = new QPushButton(tr("蜂鸣响一下")); redLight->setObjectName("redLight"); grenLight->setObjectName("grenLight"); yellLight->setObjectName("yellLight"); @@ -474,26 +475,26 @@ void QSystemSettingDlg::addLightRoot(QTreeWidget *pTreewidget, QString strName) void QSystemSettingDlg::addSuperRoot(class QTreeWidget *pTreewidget, QString strName) { - QTreeWidgetItem *m_DevelopItems = new QTreeWidgetItem(pTreewidget, QStringList(tr("ʹ"))); + QTreeWidgetItem *m_DevelopItems = new QTreeWidgetItem(pTreewidget, QStringList(tr("开发者使用"))); m_TreeItemMap.insert(strName, m_DevelopItems); m_DevelopItems->setSizeHint(1, QSize(100, 30)); - developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("")))); - developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ģʽ")))); - developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ʱ")))); - developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ϵͳģʽ")))); - developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ģʽ")))); - developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ڷ")))); - developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("緢")))); - developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ڷͨ")))); - developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("緢ͼ")))); - developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("緢ͨ")))); - developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("դʹñ־")))); - developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("߶Ⱥ")))); - developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ͨ")))); - developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ʱǷ")))); - developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ʾ")))); - developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("ʾȲ")))); + developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("保存设置")))); + developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("相机模式")))); + developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("虚拟相机触发时间")))); + developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("系统模式")))); + developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("相机触发模式")))); + developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("串口发送心跳包")))); + developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("网络发送心跳包")))); + developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("串口发送通道结果")))); + developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("网络发送检测结果")))); + developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("网络发送通道结果")))); + developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("光栅使用标志")))); + developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("保存高度厚度数据")))); + developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("通道分配")))); + developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("启动时是否检测")))); + developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("显示厚度数据")))); + developitems.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(tr("显示厚度采样数据")))); m_DevelopItems->addChildren(developitems); m_pCameraTrgType = new QComboBox(); @@ -515,72 +516,72 @@ void QSystemSettingDlg::addSuperRoot(class QTreeWidget *pTreewidget, QString str m_pSystype->addItems(sysStrList); QCheckBox *m_AutoSendTick2COM = new QCheckBox; - m_AutoSendTick2COM->setText(tr("ڷ")); + m_AutoSendTick2COM->setText(tr("串口发送心跳包")); m_AutoSendTick2COM->setObjectName("m_AutoSendTick2COM"); connect(m_AutoSendTick2COM, SIGNAL(stateChanged(int)), this, SLOT(onCheckstateChanged(int))); m_AutoSendTick2COM->setChecked(DetectState::instance()->m_AutoSendTick2COM == (int)true); QCheckBox *m_AutoSendTick2Net = new QCheckBox; - m_AutoSendTick2Net->setText(tr("緢")); + m_AutoSendTick2Net->setText(tr("网络发送心跳包")); m_AutoSendTick2Net->setObjectName("m_AutoSendTick2Net"); connect(m_AutoSendTick2Net, SIGNAL(stateChanged(int)), this, SLOT(onCheckstateChanged(int))); m_AutoSendTick2Net->setChecked(DetectState::instance()->m_AutoSendTick2Net == (int)true); QCheckBox *m_SendChannelRes2COM = new QCheckBox; - m_SendChannelRes2COM->setText(tr("ڷͨ")); + m_SendChannelRes2COM->setText(tr("串口发送通道结果")); m_SendChannelRes2COM->setObjectName("m_SendChannelRes2COM"); connect(m_SendChannelRes2COM, SIGNAL(stateChanged(int)), this, SLOT(onCheckstateChanged(int))); m_SendChannelRes2COM->setChecked(DetectState::instance()->m_SendChannelRes2COM == (int)true); QCheckBox *m_SendDetectStr2Net = new QCheckBox; - m_SendDetectStr2Net->setText(tr("緢ͼ")); + m_SendDetectStr2Net->setText(tr("网络发送检测结果")); m_SendDetectStr2Net->setObjectName("m_SendDetectStr2Net"); connect(m_SendDetectStr2Net, SIGNAL(stateChanged(int)), this, SLOT(onCheckstateChanged(int))); m_SendDetectStr2Net->setChecked(DetectState::instance()->m_SendDetectStr2Net == (int)true); QCheckBox *m_SendChannelRes2Net = new QCheckBox; - m_SendChannelRes2Net->setText(tr("緢ͨ")); + m_SendChannelRes2Net->setText(tr("网络发送通道结果")); m_SendChannelRes2Net->setObjectName("m_SendChannelRes2Net"); connect(m_SendChannelRes2Net, SIGNAL(stateChanged(int)), this, SLOT(onCheckstateChanged(int))); m_SendChannelRes2Net->setChecked(DetectState::instance()->m_SendChannelRes2Net == (int)true); QCheckBox *m_UseRaster = new QCheckBox; - m_UseRaster->setText(tr("ʹùդȡ")); + m_UseRaster->setText(tr("使用光栅获取厚度")); m_UseRaster->setObjectName("m_UseRaster"); connect(m_UseRaster, SIGNAL(stateChanged(int)), this, SLOT(onCheckstateChanged(int))); m_UseRaster->setChecked(DetectState::instance()->m_IsUseRaster == 1); QCheckBox *m_SaveD2HCsv = new QCheckBox; - m_SaveD2HCsv->setText(tr("ڲ")); + m_SaveD2HCsv->setText(tr("保存数据用于测试")); m_SaveD2HCsv->setObjectName("m_SaveD2HCsv"); connect(m_SaveD2HCsv, SIGNAL(stateChanged(int)), this, SLOT(onCheckstateChanged(int))); m_SaveD2HCsv->setChecked(DetectState::instance()->m_SaveD2HCsv == 1); QCheckBox *m_IsUseChannel = new QCheckBox; - m_IsUseChannel->setText(tr("Ƿʹͨ")); + m_IsUseChannel->setText(tr("是否使用通道分配")); m_IsUseChannel->setObjectName("m_IsUseChannel"); connect(m_IsUseChannel, SIGNAL(stateChanged(int)), this, SLOT(onCheckstateChanged(int))); m_IsUseChannel->setChecked(DetectState::instance()->m_IsUseChannel == 1); QCheckBox *m_StartAndDetect = new QCheckBox; - m_StartAndDetect->setText(tr("ǷͿʼ")); + m_StartAndDetect->setText(tr("是否启动就开始检测")); m_StartAndDetect->setObjectName("m_StartAndDetect"); connect(m_StartAndDetect, SIGNAL(stateChanged(int)), this, SLOT(onCheckstateChanged(int))); m_StartAndDetect->setChecked(DetectState::instance()->m_StartAndDetect == 1); QCheckBox *m_showThressValue = new QCheckBox; - m_showThressValue->setText(tr("Ƿʾ")); + m_showThressValue->setText(tr("是否显示")); m_showThressValue->setObjectName("m_showThressValue"); connect(m_showThressValue, SIGNAL(stateChanged(int)), this, SLOT(onCheckstateChanged(int))); m_showThressValue->setChecked(DetectState::instance()->m_showThressValue == 1); QCheckBox *m_showThressList = new QCheckBox; - m_showThressList->setText(tr("Ƿʾ")); + m_showThressList->setText(tr("是否显示")); m_showThressList->setObjectName("m_showThressList"); connect(m_showThressList, SIGNAL(stateChanged(int)), this, SLOT(onCheckstateChanged(int))); m_showThressList->setChecked(DetectState::instance()->m_showThressList == 1); - QPushButton *m_DebugSave = new QPushButton(tr("")); + QPushButton *m_DebugSave = new QPushButton(tr("保存")); m_DebugSave->setObjectName("m_DebugSave"); connect(m_DebugSave, SIGNAL(clicked()), this, SLOT(onTreeWidgetButton())); @@ -804,7 +805,7 @@ Q_SLOT void QSystemSettingDlg::onSavePLCPara() DetectState::instance()->savePLCPara(); // QVariant nType = QVariant(WF_PLCPARA); // emit(sgGenalData(nType, WF_PARASET)); -// emit sgShowMsg(tr("ѷͲ")); +// emit sgShowMsg(tr("数据已发送并保存")); } } @@ -828,7 +829,7 @@ void QSystemSettingDlg::writeSettingFile() Q_SLOT void QSystemSettingDlg::onChangeBG() { QFileDialog fileDialog; - fileDialog.setWindowTitle(tr("ѡıͼ")); + fileDialog.setWindowTitle(tr("请选择您的背景图")); fileDialog.setNameFilter("Picture(*.bmp *.jpg *.png)"); fileDialog.setFileMode(QFileDialog::ExistingFiles); if (fileDialog.exec() == QDialog::Accepted) @@ -857,9 +858,9 @@ Q_SLOT void QSystemSettingDlg::onChangeBG() //return false; } //emit sgChangeBG(DstPath); - QMessageBox infobox(QMessageBox::Information, tr("ʾ"), tr("ͼɣ."), QMessageBox::Yes, NULL); + QMessageBox infobox(QMessageBox::Information, tr("提示"), tr("背景图更新完成,请重启本软件."), QMessageBox::Yes, NULL); infobox.setWindowIcon(QIcon(":/image/leaper")); - infobox.setButtonText(QMessageBox::Yes, tr("ȷ")); + infobox.setButtonText(QMessageBox::Yes, tr("确认")); infobox.exec(); } } @@ -931,7 +932,7 @@ Q_SLOT void QSystemSettingDlg::onTreeWidgetButton() DetectState::instance()->m_CameraTrigeType = 0; } DetectState::instance()->saveDeteImage(); - //emit sgShowMsg(tr("")); + //emit sgShowMsg(tr("保存完成")); } } @@ -975,7 +976,7 @@ Q_SLOT void QSystemSettingDlg::onOpenDataPath() } else if ("pbSetSavePath" == strObj) { - QString dir = QFileDialog::getExistingDirectory(NULL, tr("ļ"), QString(), QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); + QString dir = QFileDialog::getExistingDirectory(NULL, tr("打开文件夹"), QString(), QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); if (!dir.isEmpty()) { if (m_pLbShowPath) diff --git a/tpvs17/tpMain/QTimeMgrDlg.cpp b/tpvs17/tpMain/QTimeMgrDlg.cpp index 6ed0a75..bb527bc 100644 --- a/tpvs17/tpMain/QTimeMgrDlg.cpp +++ b/tpvs17/tpMain/QTimeMgrDlg.cpp @@ -1,4 +1,4 @@ -#include "QTimeMgrDlg.h" +#include "QTimeMgrDlg.h" #include #include "timemgrctrl.h" #include "qaddtimedlg.h" @@ -18,7 +18,7 @@ QTimeMgrDlg::QTimeMgrDlg(QWidget *parent) ui.setupUi(this); tablemodel = new QStandardItemModel(); QStringList stringList; - stringList << tr("") << tr("ʼʱ") << tr("ʱ"); + stringList << tr("班次") << tr("起始时间") << tr("结束时间"); tablemodel->setHorizontalHeaderLabels(stringList); connect(ui.TimeMgr_tableView, SIGNAL(clicked(const QModelIndex &)), this, SLOT(SlotcellClicked(const QModelIndex &))); connect(ui.TimeMgr_ADD_Button, SIGNAL(clicked()), this, SLOT(onButtonClicked())); @@ -49,7 +49,7 @@ Q_SLOT void QTimeMgrDlg::onButtonClicked() QString str_name = obj->objectName(); if (str_name == "TimeMgr_ADD_Button") { QAddTimeDlg dlg(this); - dlg.setWindowTitle(tr("ò")); + dlg.setWindowTitle(tr("设置参数")); dlg.setWindowIcon(QIcon(":/image/leaper")); dlg.setFocus(); dlg.setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); @@ -65,8 +65,8 @@ Q_SLOT void QTimeMgrDlg::onButtonClicked() } int nIndex = tablemodel->rowCount(); tablemodel->setItem(nIndex, 0, new QStandardItem(m_Timestruct.m_name)); - QString strStart = QString("%1 %2").arg(m_Timestruct.time_start == AM ? tr("") : tr("")).arg(m_Timestruct.m_startTime.toString("hh:mm")); - QString strEnd = QString("%1 %2").arg(m_Timestruct.time_end == AM ? tr("") : tr("")).arg(m_Timestruct.m_endTime.toString("hh:mm")); + QString strStart = QString("%1 %2").arg(m_Timestruct.time_start == AM ? tr("当天") : tr("隔天")).arg(m_Timestruct.m_startTime.toString("hh:mm")); + QString strEnd = QString("%1 %2").arg(m_Timestruct.time_end == AM ? tr("当天") : tr("隔天")).arg(m_Timestruct.m_endTime.toString("hh:mm")); tablemodel->setItem(nIndex, 1, new QStandardItem(strStart)); tablemodel->setItem(nIndex, 2, new QStandardItem(strEnd)); m_Timestruct.m_Index = nIndex; @@ -78,24 +78,24 @@ Q_SLOT void QTimeMgrDlg::onButtonClicked() } else if (str_name == "TimeMgr_Del_Button") { QString str_name = ui.TimeMgr_label->text(); - if (str_name.isEmpty() || str_name == tr("δѡ")) + if (str_name.isEmpty() || str_name == tr("未选中")) { - //QMessageBox::information(NULL, QString("ʾ"), QString("δѡΣѡ޸ġ"), QMessageBox::Ok); - QMessageBox infobox(QMessageBox::Information, tr("ʾ"), tr("δѡΣѡ޸ġ"), QMessageBox::Yes, this); + //QMessageBox::information(NULL, QString("提示"), QString("未选择班次,请选择进行修改。"), QMessageBox::Ok); + QMessageBox infobox(QMessageBox::Information, tr("提示"), tr("未选择班次,请选择进行修改。"), QMessageBox::Yes, this); infobox.setWindowIcon(QIcon(":/image/leaper")); - infobox.setButtonText(QMessageBox::Yes, tr("ȷ")); + infobox.setButtonText(QMessageBox::Yes, tr("确认")); infobox.exec(); return; } - QString str = tr("ȷҪɾ %1 Σ").arg(str_name); + QString str = tr("您确定要删除 %1 班次?").arg(str_name); if (str_name.isEmpty()) return; - QMessageBox infobox(QMessageBox::Information, tr("ʾ"), str, QMessageBox::Ok | QMessageBox::Cancel, this); + QMessageBox infobox(QMessageBox::Information, tr("提示"), str, QMessageBox::Ok | QMessageBox::Cancel, this); infobox.setWindowIcon(QIcon(":/image/leaper")); - infobox.setButtonText(QMessageBox::Ok, tr("ȷ")); - infobox.setButtonText(QMessageBox::Cancel, tr("ȡ")); + infobox.setButtonText(QMessageBox::Ok, tr("确认")); + infobox.setButtonText(QMessageBox::Cancel, tr("取消")); if (infobox.exec() == QMessageBox::Ok) { if (str_name.isEmpty()) @@ -116,12 +116,12 @@ Q_SLOT void QTimeMgrDlg::onButtonClicked() } else if (str_name == "TimeMgr_Mod_Button") { QString str_name = ui.TimeMgr_label->text(); - if (str_name.isEmpty() || str_name == tr("δѡ")) + if (str_name.isEmpty() || str_name == tr("未选中")) { - QMessageBox infobox(QMessageBox::Information, tr("ʾ"), tr("δѡΣѡ޸ġ"), QMessageBox::Yes, this); + QMessageBox infobox(QMessageBox::Information, tr("提示"), tr("未选择班次,请选择进行修改。"), QMessageBox::Yes, this); infobox.setWindowIcon(QIcon(":/image/leaper")); - infobox.setButtonText(QMessageBox::Yes, tr("ȷ")); + infobox.setButtonText(QMessageBox::Yes, tr("确认")); infobox.exec(); return; @@ -145,8 +145,8 @@ Q_SLOT void QTimeMgrDlg::onButtonClicked() { TimeStruct tiItem = vec.at(n); tablemodel->setItem(nIndex, 0, new QStandardItem(tiItem.m_name)); - QString strStart = QString("%1 %2").arg(tiItem.time_start == AM ? tr("") : tr("")).arg(tiItem.m_startTime.toString("hh:mm")); - QString strEnd = QString("%1 %2").arg(tiItem.time_end == AM ? tr("") : tr("")).arg(tiItem.m_endTime.toString("hh:mm")); + QString strStart = QString("%1 %2").arg(tiItem.time_start == AM ? tr("当天") : tr("隔天")).arg(tiItem.m_startTime.toString("hh:mm")); + QString strEnd = QString("%1 %2").arg(tiItem.time_end == AM ? tr("当天") : tr("隔天")).arg(tiItem.m_endTime.toString("hh:mm")); tablemodel->setItem(nIndex, 1, new QStandardItem(strStart)); tablemodel->setItem(nIndex, 2, new QStandardItem(strEnd)); nIndex++; @@ -178,15 +178,15 @@ void QTimeMgrDlg::showEvent(QShowEvent *) ui.TimeMgr_tableView->setColumnWidth(0, 100); ui.TimeMgr_tableView->setColumnWidth(1, 100); ui.TimeMgr_tableView->setColumnWidth(2, 100); - //Ĭʾͷò۵ĻǿԽ + //默认显示行头,如果你觉得不美观的话,我们可以将隐藏 //m_tableView->verticalHeader()->hide(); ui.TimeMgr_tableView->setSelectionBehavior(QAbstractItemView::SelectRows); ui.TimeMgr_tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); //tableView->resizeColumnsToContents(); - //QTableViewʹҼ˵ø + //如果你用在QTableView中使用右键菜单,需启用该属性 //tableView->setContextMenuPolicy(Qt::CustomContextMenu); ui.TimeMgr_tableView->setWordWrap(false); - //tableView->setShowGrid(false);//ʾ + //tableView->setShowGrid(false);//显示表格线 ui.TimeMgr_tableView->setAlternatingRowColors(true); int nIndex = 0; if (m_MapTime.size() <= 0) @@ -198,8 +198,8 @@ void QTimeMgrDlg::showEvent(QShowEvent *) { TimeStruct tiItem = vec.at(n); tablemodel->setItem(nIndex, 0, new QStandardItem(tiItem.m_name)); - QString strStart = QString("%1 %2").arg(tiItem.time_start == AM ? tr("") : tr("")).arg(tiItem.m_startTime.toString("hh:mm")); - QString strEnd = QString("%1 %2").arg(tiItem.time_end == AM ? tr("") : tr("")).arg(tiItem.m_endTime.toString("hh:mm")); + QString strStart = QString("%1 %2").arg(tiItem.time_start == AM ? tr("当天") : tr("隔天")).arg(tiItem.m_startTime.toString("hh:mm")); + QString strEnd = QString("%1 %2").arg(tiItem.time_end == AM ? tr("当天") : tr("隔天")).arg(tiItem.m_endTime.toString("hh:mm")); tablemodel->setItem(nIndex, 1, new QStandardItem(strStart)); tablemodel->setItem(nIndex, 2, new QStandardItem(strEnd)); nIndex++; diff --git a/tpvs17/tpMain/lpGlobalData.cpp b/tpvs17/tpMain/lpGlobalData.cpp index 9360c8d..46e207e 100644 --- a/tpvs17/tpMain/lpGlobalData.cpp +++ b/tpvs17/tpMain/lpGlobalData.cpp @@ -1,4 +1,4 @@ -#include "lpGlobalData.h" +#include "lpGlobalData.h" lpGlobalData::lpGlobalData(QObject *parent) : QObject(parent) diff --git a/tpvs17/tpMain/lpMain.cpp b/tpvs17/tpMain/lpMain.cpp index 63a9a6e..bca9d9b 100644 --- a/tpvs17/tpMain/lpMain.cpp +++ b/tpvs17/tpMain/lpMain.cpp @@ -1,4 +1,4 @@ -#include "lpMain.h" +#include "lpMain.h" #pragma execution_character_set("utf-8") IMAINWIDGET_API IMainWidget* MainWidget_Create() diff --git a/tpvs17/tpMain/lpMainWin.cpp b/tpvs17/tpMain/lpMainWin.cpp index b58f909..da57cbb 100644 --- a/tpvs17/tpMain/lpMainWin.cpp +++ b/tpvs17/tpMain/lpMainWin.cpp @@ -1,4 +1,4 @@ -#include "lpMainWin.h" +#include "lpMainWin.h" #include "quserinfo_global.h" #include #include @@ -25,7 +25,7 @@ lpMainWin::lpMainWin(QWidget *parent) QMySplashScreen m_screen; m_screen.show(); qRegisterMetaType("TimeStruct"); - m_screen.ShowMsg(tr("رҪģ.....")); + m_screen.ShowMsg(tr("加载必要模块.....")); onInitCoreCtrl(); ui.setupUi(this); onInitAbout(); @@ -69,23 +69,23 @@ lpMainWin::lpMainWin(QWidget *parent) QToolButton* pbutton = new QToolButton(this); pbutton->setMenu(pToolMenu); pbutton->setIcon(QIcon(":/ToolBarPic/ToolButon")); - pbutton->setText(tr("")); - pbutton->setToolTip(tr("")); + pbutton->setText(tr("工具")); + pbutton->setToolTip(tr("工具")); pbutton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); pbutton->setPopupMode(QToolButton::InstantPopup); ui.mainToolBar->addWidget(pbutton); ui.mainToolBar->addAction(ui.action_about); } - {// + {//加载语言设置 QSettings languageSetting("hubdetect.ini", QSettings::IniFormat); QString strLangeage = languageSetting.value("language", "Chinese").toString(); SetLanguage(strLangeage); } { - m_pLbCurrentTime = new QLabel(tr("ϵͳʱ")); - m_pLbBanci = new QLabel(tr("Ϣ")); - m_pLbDetectState = new QLabel(tr("״̬")); - m_pLbUser = new QLabel(tr("û")); + m_pLbCurrentTime = new QLabel(tr("系统时间")); + m_pLbBanci = new QLabel(tr("班次信息")); + m_pLbDetectState = new QLabel(tr("检测状态")); + m_pLbUser = new QLabel(tr("用户:")); QFont m_font; m_font.setBold(true); @@ -104,7 +104,7 @@ lpMainWin::lpMainWin(QWidget *parent) m_pLbDetectState->setFont(m_font); m_pLbDetectState->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); - //m_pLbOnLine = new class QLabel("ģʽ"); + //m_pLbOnLine = new class QLabel("模式:"); //m_pLbOnLine->setMinimumWidth(c_nWidth); m_pLbUser->setFont(m_font); @@ -115,9 +115,9 @@ lpMainWin::lpMainWin(QWidget *parent) ui.statusBar->addWidget(m_pLbBanci); ui.statusBar->addPermanentWidget(m_pLbCurrentTime); } - //ûģ + //加载用户管理模块 loadUserModel(); - //ʼģ͹ģ + //初始化模型管理模块 { m_pCtrl = new WheelCtrl(QCoreApplication::applicationDirPath(), &m_screen); pWorkCtrl = new QWorkMgrCtlr(m_pCtrl); @@ -126,26 +126,26 @@ lpMainWin::lpMainWin(QWidget *parent) m_pworkUI->InitUI(); connect(m_pworkUI, SIGNAL(sgUpdatedefect()), this, SLOT(onUpdateDefect())); - m_pModelMgrDlg = new QModelMgrDlg(m_pCtrl);//ģ + m_pModelMgrDlg = new QModelMgrDlg(m_pCtrl);//模板管理 - m_pDebugDlg = new QDebugDlg();//Խ + m_pDebugDlg = new QDebugDlg();//调试界面 connect(m_pDebugDlg, SIGNAL(sgTriggerCam()), this, SLOT(onTriggerCam())); m_pDebugDlg->onSetCtrl(m_pCtrl); - m_pTimerMgrDlg = new QTimeMgrDlg();//ι + m_pTimerMgrDlg = new QTimeMgrDlg();//班次管理 m_pTimerMgrDlg->onSetCtrlPtr(m_pCtrl); - m_pSystemSettingDlg = new QSystemSettingDlg();//ϵͳ + m_pSystemSettingDlg = new QSystemSettingDlg();//系统设置 m_CamSettingDlg = new QCamSettingDlg(); m_CamSettingDlg->setCoreCtrlPtr(m_pCoreCtrl); m_pixMapList = new QPixmapListBar(ui.tp_main_tabWidget); - ui.tp_main_tabWidget->insertTab(0, m_pixMapList, tr("ʷ")); + ui.tp_main_tabWidget->insertTab(0, m_pixMapList, tr("历史")); ui.tp_main_tabWidget->setCurrentIndex(0); } { - /*ģ߳*/ + /*发送模板库线程*/ SendModelLibTask = new QMyThread(); SendModelLibTask->setUser(true); TaskFunc KuTaskFunc = std::bind(&lpMainWin::SendModelKuTskFun,this); @@ -155,16 +155,16 @@ lpMainWin::lpMainWin(QWidget *parent) TaskFunc TickFunc = std::bind(&lpMainWin::SendTickTskFun, this); SendTiskTsk->loadfunc(TickFunc); - m_screen.ShowMsg(tr("ϵͳʼ...")); + m_screen.ShowMsg(tr("系统初始化完成...")); } { onSetModel(); - /*ͨż*/ + /*网络通信加载*/ m_pNet = ((WheelCtrl*)m_pCtrl)->getNet(); connect(m_pNet, SIGNAL(sgShow2UI(QString, bool)), this, SLOT(onTcpConnet(QString, bool)));//net connect(m_pNet, SIGNAL(sgClientConnect(QString, bool)), this, SLOT(onClientConnect(QString, bool)));//net - //connect(m_pNet, SIGNAL(sgRecv(const QString &)), this, SLOT(onTcpRecv(const QString &)));// netʾ + //connect(m_pNet, SIGNAL(sgRecv(const QString &)), this, SLOT(onTcpRecv(const QString &)));// net显示 connect(m_pNet, SIGNAL(sgThickness(double)), this, SLOT(onThickness(double)));//xy height connect(m_pNet, SIGNAL(sgRecvDetectState(int, int)), this, SLOT(onDetectStateRecv(int, int)));//xy check connect(m_pNet, SIGNAL(sgClearRev(bool)), this, SLOT(onClearLibRev(bool)));//xy clearlib @@ -178,21 +178,21 @@ lpMainWin::lpMainWin(QWidget *parent) connect(m_pNet, SIGNAL(sgShutDownComputer()), this, SLOT(onShutDownComputer())); connect(m_pNet, SIGNAL(sgLibRev(bool)), SendModelLibTask, SLOT(WaitSingleIn(bool)));//xy lib -// connect(m_pNet, SIGNAL(sgChangeOnlineState(int)), m_pUi, SLOT(onSwitchOnlineModel(int)));//ǿ +// connect(m_pNet, SIGNAL(sgChangeOnlineState(int)), m_pUi, SLOT(onSwitchOnlineModel(int)));//强制在线 离线 - QTimer::singleShot(500, m_pNet, SLOT(onOpenServer()));//ӳ2sTCP + QTimer::singleShot(500, m_pNet, SLOT(onOpenServer()));//延迟2s打开网络TCP服务 } { - connect(&m_PulseTimer, SIGNAL(timeout()), this, SLOT(onPulseTimer()));// - connect(&m_wfPulseTimer, SIGNAL(timeout()), this, SLOT(onwfPulseTimer()));// - connect(&m_ThicknessTimer, SIGNAL(timeout()), this, SLOT(onThicknessTimer()));// Ȳѯ + connect(&m_PulseTimer, SIGNAL(timeout()), this, SLOT(onPulseTimer()));//心跳包 + connect(&m_wfPulseTimer, SIGNAL(timeout()), this, SLOT(onwfPulseTimer()));//心跳包 + connect(&m_ThicknessTimer, SIGNAL(timeout()), this, SLOT(onThicknessTimer()));// 厚度查询 connect(&m_ReadLibTimer, SIGNAL(timeout()), this, SLOT(onSendReadOnlineLib())); connect(this, SIGNAL(sgTickTsk()), this, SLOT(onPulseTimer())); connect(this, SIGNAL(sgShowMsg(QString, bool)), this, SLOT(onTcpConnet(QString, bool))); - connect(this, SIGNAL(sgTaskSendModels(int, QString, double, double)), this, SLOT(onTaskSendModels(int, QString, double, double)));//ڷĪ - connect(this, SIGNAL(sgTskSendDetectState(int, QString, int)), this, SLOT(onTaskSendDetectState(int, QString, int)));//߼ⷢ ڷͼ״̬ - connect(this, SIGNAL(sgTskSendCheck(int, int, QString)), this, SLOT(onTaskCheck(int, int, QString)));//߼״̬ѯ ڲѯ߳ + connect(this, SIGNAL(sgTaskSendModels(int, QString, double, double)), this, SLOT(onTaskSendModels(int, QString, double, double)));//用于发送莫板库 + connect(this, SIGNAL(sgTskSendDetectState(int, QString, int)), this, SLOT(onTaskSendDetectState(int, QString, int)));//离线检测发送 用于发送检测状态 + connect(this, SIGNAL(sgTskSendCheck(int, int, QString)), this, SLOT(onTaskCheck(int, int, QString)));//在线检测状态查询 用于查询线程 // connect(this, SIGNAL(sgCheckEnd()), this, SLOT(onCheckEnd())); connect(this, SIGNAL(sgShowImgState(QString)), this, SLOT(onShowImgState(QString))); connect(this, SIGNAL(sgGetImg()), this, SLOT(onGetImg())); @@ -202,14 +202,14 @@ lpMainWin::lpMainWin(QWidget *parent) connect(this, SIGNAL(sgShowChannelRes(QString)), this, SLOT(onShowChannel(QString))); } { - /*֮һֱͺȲѯ*/ + /*启动之后就一直发送心跳包和厚度查询*/ if (DetectState::instance()->m_AutoSendTick2Net) { SendTiskTsk->setSleepTime(1000); SendTiskTsk->start(); } - if (DetectState::instance()->m_StartAndDetect == 1)//m_sysType ʾƼ + if (DetectState::instance()->m_StartAndDetect == 1)//m_sysType 表示万丰科技的 { // m_timerDetect.setSingleShot(true); // connect(&m_timerDetect, SIGNAL(timeout()), m_pUi, SLOT(onStartDetect())); @@ -417,8 +417,8 @@ void lpMainWin::SearchQmFile(const QString & strDir) return; } dir.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); - dir.setSorting(QDir::DirsFirst); // ļ - // תһList + dir.setSorting(QDir::DirsFirst); // 文件夹优先 + // 转换成一个List QFileInfoList list = dir.entryInfoList(); if (list.size() < 1) { @@ -429,7 +429,7 @@ void lpMainWin::SearchQmFile(const QString & strDir) { QFileInfo fileInfo = list.at(i); QString tt = fileInfo.fileName(); - // ļ + // 如果是文件夹 bool bisDir = fileInfo.isDir(); if (bisDir) { @@ -451,7 +451,7 @@ void lpMainWin::SetTranslator(const QString strPath) return; } QTranslator *pTrans = new QTranslator; - if (pTrans->load(strPath)) // سɹ + if (pTrans->load(strPath)) // 如果加载成功 { qApp->installTranslator(pTrans); m_VecTranPtr.append(pTrans); @@ -487,7 +487,7 @@ void lpMainWin::SetLanguage(QString strLangage) SearchQmFile(transDir); } } -/*߳̽ͼ*/ +/*主线程接收图像*/ void lpMainWin::INewCameraImage(const QString& camKey, QImage img) { if (m_ImgViewer) @@ -507,13 +507,13 @@ void lpMainWin::INewCameraImage(const QString& camKey, QImage img) } } -/*̷߳㷨*/ +/*多线程发送算法结果*/ void lpMainWin::IVariantMapToUI(const QString& camKey, const QVariantMap& vMap) { - emit(sgShowImgState(tr("ʾʶ"))); + emit(sgShowImgState(tr("显示识别结果"))); if (vMap.contains("error")) { - emit(sgShowMsgdlg(tr("ͼͱͼһⱳ"))); + emit(sgShowMsgdlg(tr("相机图像和背景图不一样,请更换检测背景!"))); return; } Result2Ui *pResult = (Result2Ui*)vMap.value("result").toLongLong(); @@ -525,7 +525,7 @@ void lpMainWin::IVariantMapToUI(const QString& camKey, const QVariantMap& vMap) static int ErrorNum = 0; if (m_pNet) { if (pResult->m_strModel == "NG") { - //m_pNet->sendLight(0, 1, 1000, 10);// + //m_pNet->sendLight(0, 1, 1000, 10);//红灯 SendResultBee(LIGHT_REDBEE, 1); SendResultBee(LIGHT_BEE, 1); @@ -537,9 +537,9 @@ void lpMainWin::IVariantMapToUI(const QString& camKey, const QVariantMap& vMap) ErrorNum = 0; } if (ErrorNum >= 3) { - QString str = tr("!!!%1δʶͺ").arg(ErrorNum); + QString str = tr("警告!!!连续出现%1个未识别型号").arg(ErrorNum); if (DetectState::instance()->IsDetect == false) - str += tr(",δ⹦ɵ"); + str += tr(",未开启检测功能造成的"); m_pCtrl->addLog(str, emTypeWaring); //m_pNet->sendLight(0, 1, 2000, 100); //m_pNet->sendLight(3, 1, 3000, 100); @@ -548,11 +548,11 @@ void lpMainWin::IVariantMapToUI(const QString& camKey, const QVariantMap& vMap) } } if (DetectState::instance()->m_SendDetectStr2Net) - SendResultStr2PLC(pResult);//ͼַPLC + SendResultStr2PLC(pResult);//发送检测结果字符到PLC if (DetectState::instance()->m_SendChannelRes2COM) - SendResultChannelCOM(pResult);//ͼͨ + SendResultChannelCOM(pResult);//发送检测结果通道到串口 if (DetectState::instance()->m_SendChannelRes2Net) - SendResultChannel2PLC(pResult);//ͼͨPLC + SendResultChannel2PLC(pResult);//发送检测结果通道到PLC m_pCtrl->saveResult(pResult); saveImage(pResult); @@ -569,13 +569,13 @@ void lpMainWin::IVariantMapToUI(const QString& camKey, const QVariantMap& vMap) // } } -/*̻߳ȡ㷨*/ +/*多线程获取算法参数*/ QVariant lpMainWin::IGetVariantById(int id) { - m_nDiffTrigNum--;//뵽 ʾȡͼƬ + m_nDiffTrigNum--;//进入到这里 表示获取到了图片 qWarning() << "Alg get An Image:" << "(" << QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss zzz") << ")"; - emit(sgShowImgState(tr("ͼ,ڼ..."))); + emit(sgShowImgState(tr("获得图像,正在计算中..."))); emit(sgGetImg()); qDebug() << "get one Pic ,id=" << id; if (DetectState::instance()->m_showThressList == 1) { @@ -621,12 +621,12 @@ Q_SLOT void lpMainWin::onLogInOut(QString strName, int level, int state) lpGlobalData::instance()->m_level = level; if (state == 0) { m_pCtrl->setUser(strName, level); - ui.action_Login->setText(tr("ע ")); + ui.action_Login->setText(tr("注 销")); } else { m_pCtrl->setUser(strName, level); - ui.action_Login->setText(tr(" ¼")); + ui.action_Login->setText(tr("登 录")); } onUpdateByLevel(level); } @@ -635,14 +635,14 @@ Q_SLOT void lpMainWin::onActionClicked() { QString strObj = sender()->objectName(); if ("action_userManager" == strObj) { - /*û*/ + /*用户管理*/ if (m_pUserCtrl) { m_pUserCtrl->ShowUserMgrDlg(this); } } else if ("action_Login" == strObj) { - /*û½*/ + /*用户登陆*/ if (m_pUserCtrl) { m_pUserCtrl->CheckLogin(this); @@ -650,7 +650,7 @@ Q_SLOT void lpMainWin::onActionClicked() } else if ("action_about" == strObj) { m_aboutDlg.setParent(this); - m_aboutDlg.setWindowTitle(tr("")); + m_aboutDlg.setWindowTitle(tr("关于")); m_aboutDlg.setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); m_aboutDlg.setWindowIcon(QIcon(":/resource/logo-8.png")); m_aboutDlg.setWindowModality(Qt::ApplicationModal); @@ -667,7 +667,7 @@ Q_SLOT void lpMainWin::onActionClicked() else if ("action_setting_ban" == strObj) { if (m_pTimerMgrDlg) { m_pTimerMgrDlg->setParent(this); - m_pTimerMgrDlg->setWindowTitle(tr("ι")); + m_pTimerMgrDlg->setWindowTitle(tr("班次管理")); m_pTimerMgrDlg->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); m_pTimerMgrDlg->setWindowIcon(QIcon(":/resource/logo-8.png")); m_pTimerMgrDlg->setWindowModality(Qt::ApplicationModal); @@ -678,7 +678,7 @@ Q_SLOT void lpMainWin::onActionClicked() else if ("action_debug" == strObj) { if (m_pDebugDlg) { m_pDebugDlg->setParent(this); - m_pDebugDlg->setWindowTitle(tr("Թ")); + m_pDebugDlg->setWindowTitle(tr("调试工具")); m_pDebugDlg->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); m_pDebugDlg->setWindowIcon(QIcon(":/resource/logo-8.png")); m_pDebugDlg->setWindowModality(Qt::ApplicationModal); @@ -686,7 +686,7 @@ Q_SLOT void lpMainWin::onActionClicked() m_pDebugDlg->show(); } } - else if ("action_connect_mode" == strObj) {//ģ年ѡ + else if ("action_connect_mode" == strObj) {//检测模板勾选 if (m_pworkUI) { m_pworkUI->setParent(this); @@ -700,11 +700,11 @@ Q_SLOT void lpMainWin::onActionClicked() else if ("action_checkdata" == strObj) { } - else if ("action_modelmgr" == strObj) {//ģ + else if ("action_modelmgr" == strObj) {//模板管理 if (m_pModelMgrDlg) { m_pModelMgrDlg->setParent(this); - m_pModelMgrDlg->setWindowTitle(tr("ģ")); + m_pModelMgrDlg->setWindowTitle(tr("模板管理")); m_pModelMgrDlg->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); m_pModelMgrDlg->setWindowIcon(QIcon(":/resource/logo-8.png")); m_pModelMgrDlg->setWindowModality(Qt::ApplicationModal); @@ -717,7 +717,7 @@ Q_SLOT void lpMainWin::onActionClicked() { m_pSystemSettingDlg->setParent(this); m_pSystemSettingDlg->onShowWidget(lpGlobalData::instance()->m_level); - m_pSystemSettingDlg->setWindowTitle(tr("ϵͳ")); + m_pSystemSettingDlg->setWindowTitle(tr("系统参数设置")); m_pSystemSettingDlg->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); m_pSystemSettingDlg->setWindowIcon(QIcon(":/resource/logo-8.png")); m_pSystemSettingDlg->setWindowModality(Qt::ApplicationModal); @@ -730,7 +730,7 @@ Q_SLOT void lpMainWin::onActionClicked() { m_CamSettingDlg->setParent(this); //m_CamSettingDlg->onShowWidget(lpGlobalData::instance()->m_level); - m_CamSettingDlg->setWindowTitle(tr("")); + m_CamSettingDlg->setWindowTitle(tr("相机配置")); m_CamSettingDlg->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); m_CamSettingDlg->setWindowIcon(QIcon(":/resource/logo-8.png")); m_CamSettingDlg->setWindowModality(Qt::ApplicationModal); @@ -743,13 +743,13 @@ Q_SLOT void lpMainWin::onActionClicked() Q_SLOT void lpMainWin::onButtonClicked() { QString strObj = sender()->objectName(); - if ("btn_start_detect" == strObj)//ʼ + if ("btn_start_detect" == strObj)//开始 { - //ʼⰴť + //开始检测按钮 if (DetectState::instance()->IsDetect == false) { - ui.btn_start_detect->setText(tr("ֹͣ")); + ui.btn_start_detect->setText(tr("停止检测")); m_pCtrl->onStart(); - QString str = tr("˿ʼⰴť⹦ܿ"); + QString str = tr("按下了开始检测按钮,检测功能开启"); m_pCtrl->addLog(str, emTypeRunState); //QTimer::singleShot(3000, [&](){m_pState->bLockDetect = true; }); @@ -757,23 +757,23 @@ Q_SLOT void lpMainWin::onButtonClicked() } else { m_pCtrl->onFinish(); - ui.btn_start_detect->setText(tr("ʼ")); - QString str = tr("ֹͣⰴť⹦ܹر"); + ui.btn_start_detect->setText(tr("开始检测")); + QString str = tr("按下了停止检测按钮,检测功能关闭"); m_pCtrl->addLog(str, emTypeRunState); DetectState::instance()->bLockDetect = false; } DetectState::instance()->IsDetect = !DetectState::instance()->IsDetect; } - else if ("btn_clear_data" == strObj) {// - QMessageBox infobox(QMessageBox::Warning, tr("ʾ"), tr(""), QMessageBox::Yes | QMessageBox::Cancel, this); - infobox.setButtonText(QMessageBox::Yes, tr("ȷ")); - infobox.setButtonText(QMessageBox::Cancel, tr("ȡ")); + else if ("btn_clear_data" == strObj) {//交班清零 + QMessageBox infobox(QMessageBox::Warning, tr("提示"), tr("将清空所有数据"), QMessageBox::Yes | QMessageBox::Cancel, this); + infobox.setButtonText(QMessageBox::Yes, tr("确定")); + infobox.setButtonText(QMessageBox::Cancel, tr("取消")); infobox.setWindowIcon(QIcon(":/image/leaper")); if (QMessageBox::Cancel != infobox.exec()) { m_pCtrl->onClear(); ui.main_lb_res_ok_num->setText(QString::number(0)); ui.main_lb_res_ng_num->setText(QString::number(0)); - QString str = m_pCtrl->getUserName() + ":" + tr("㰴ťȫ"); + QString str = m_pCtrl->getUserName() + ":" + tr("按下了清零按钮,数据全部清零"); m_pCtrl->addLog(str, emTypeUseState); } } @@ -782,8 +782,8 @@ Q_SLOT void lpMainWin::onButtonClicked() void lpMainWin::timerEvent(QTimerEvent *event) { if (event->timerId() == m_timerID) { - QString str = tr("ϵͳʱ䣺 "); - QString strDetectState = tr("״̬:") + (DetectState::instance()->IsDetect == true ? tr("...") : tr("δ...")); + QString str = tr("系统时间: "); + QString strDetectState = tr("检测状态:") + (DetectState::instance()->IsDetect == true ? tr("检测中...") : tr("未检测...")); // if (strLanguage != "Chinese") // { // str = "Time:"; @@ -813,7 +813,7 @@ void lpMainWin::timerEvent(QTimerEvent *event) if (m_pCtrl) show_label = m_pCtrl->getCurrentBan(); - QString strMsg = tr("Ϣ") + (show_label.isEmpty() == true ? tr("ʱδð") : show_label); + QString strMsg = tr("班次信息:") + (show_label.isEmpty() == true ? tr("该时间段未设置班次") : show_label); // if (strLanguage != "Chinese") // { // strMsg = tr("Classes:") @@ -827,7 +827,7 @@ void lpMainWin::timerEvent(QTimerEvent *event) // if (strLanguage != "Chinese") // m_pLbUser->setText(tr("User:") + show_label); // else - m_pLbUser->setText(tr("ǰû") + show_label); + m_pLbUser->setText(tr("当前用户:") + show_label); m_pLbUser->setStyleSheet("font: 14px;"); } } @@ -840,8 +840,8 @@ void lpMainWin::closeEvent(QCloseEvent *event) void lpMainWin::SendModelKuTskFun() { /* - ģ߳ - еģȫPLC + 发送模板库线程 + 把已有的所有模板库全部发送至PLC中 */ DetectState::instance()->m_ThreadWaitTime = 100; const int c_nErrorTime = 3; @@ -877,13 +877,13 @@ void lpMainWin::SendModelKuTskFun() } while (nIndex < lst.size()); } - emit(sgShowMsgdlg(tr("ģⷢ"))); + emit(sgShowMsgdlg(tr("模板库发送完成"))); } void lpMainWin::SendTickTskFun() { - // + //心跳包发送 if (m_pNet) { m_pNet->sendPulse(6000, DetectState::instance()->IsDetect, DetectState::instance()->IsOnline); @@ -894,8 +894,8 @@ void lpMainWin::SendTickTskFun() void lpMainWin::onSetModel() { /* - ¼ģ - ģ嵽㷨ʹ + 重新加载模板 + 重新设置模板到算法中使用 */ forDefectList = pWorkCtrl->getDefectList(); if (m_pTableCheck) { @@ -904,7 +904,7 @@ void lpMainWin::onSetModel() strList.append("NG"); m_pTableCheck->setModelList(strList); } - QString str = QString("%1:%2(%3)").arg(tr("ڼͺ")).arg(forDefectList.size()).arg(m_pCtrl->getAllModelName().size() - 1); + QString str = QString("%1:%2(%3)").arg(tr("正在检测型号数")).arg(forDefectList.size()).arg(m_pCtrl->getAllModelName().size() - 1); ui.main_showWorkLabel->setText(str); // IWheelUi *pMainWidget = m_pUi->getItemWidget(WHEEL_UI_MAINWINDOW); @@ -929,7 +929,7 @@ Q_SLOT void lpMainWin::onUpdateDefect() { strList.append("NG"); m_pTableCheck->setModelList(strList); } - QString str = QString("%1:%2(%3)").arg(tr("ڼͺ")).arg(forDefectList.size()).arg(m_pCtrl->getAllModelName().size() - 1); + QString str = QString("%1:%2(%3)").arg(tr("正在检测型号数")).arg(forDefectList.size()).arg(m_pCtrl->getAllModelName().size() - 1); ui.main_showWorkLabel->setText(str); } @@ -961,7 +961,7 @@ Q_SLOT void lpMainWin::onTcpConnet(QString str, bool bConnect) Q_SLOT void lpMainWin::onClientConnect(QString addr, bool bConnect) { - /*жӵĻIPַDzDZúõIP״̬ ĬϽģ*/ + /*判断连接的机器IP地址是不是本地设置好的IP,并检测他的连接状态,如果是 默认将发送模板库给他*/ QString m_addr = NetProtocol::genAddressPort(m_pNet->getIp(emNetClient), m_pNet->getPort(emNetClient)); if (m_addr == addr && bConnect) { @@ -969,16 +969,16 @@ Q_SLOT void lpMainWin::onClientConnect(QString addr, bool bConnect) } if (bConnect == true && 1 == DetectState::instance()->IsOnline) { - //m_pUi->onSwitchOnlineModel(m_pState->IsOnline);//ģʽ ģʽл + //m_pUi->onSwitchOnlineModel(m_pState->IsOnline);//在线模式 离线模式切换 } QString strMsg; if (bConnect) { - strMsg += QString("IP:%1 %2").arg(addr).arg(tr("")); + strMsg += QString("IP:%1 %2").arg(addr).arg(tr("已连接")); } else { - strMsg += QString("IP:%1 %2").arg(addr).arg(tr("ѶϿ")); + strMsg += QString("IP:%1 %2").arg(addr).arg(tr("已断开")); } m_pCtrl->addLog(strMsg, emTypeRunState); ui.main_textBrowser->append(strMsg); @@ -1008,7 +1008,7 @@ Q_SLOT void lpMainWin::onDetectStateRecv(int nIndex, int value) Q_SLOT void lpMainWin::onClearLibRev(bool state) { - /*յӦ*/ + /*接收到库清空应答*/ if (SendModelLibTask) { if (SendModelLibTask->isRunning()) SendModelLibTask->stop(); @@ -1018,7 +1018,7 @@ Q_SLOT void lpMainWin::onClearLibRev(bool state) } } -//յ رնʱ +//接收到心跳包 关闭定时器 Q_SLOT void lpMainWin::onPulseRev() { if (m_TimerID != 0) @@ -1031,7 +1031,7 @@ Q_SLOT void lpMainWin::onPulseRev() Q_SLOT void lpMainWin::onRecvTrigPara() { - emit(sgShowMsgdlg(tr("PLCյò"))); + emit(sgShowMsgdlg(tr("PLC已收到相关设置参数!"))); } Q_SLOT void lpMainWin::onReadDetectState(int nIndex, QString strModel) @@ -1065,12 +1065,12 @@ Q_SLOT void lpMainWin::onReadDetectStateASK() Q_SLOT void lpMainWin::onTrigRecv(int m_value) { - /*ڽPLCź ԼǷյͼ */ + /*用于接收PLC触发相机的信号 自检是否收到图像 */ qDebug() << "recv a camera trig :" << QString::number(m_value); qWarning() << "recv a Triger signal from PLC:" << "(" << QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss zzz") << ")"; - //if (m_pState)//ʹ + //if (m_pState)//如果是使用软件触发相机拍照 { - if (DetectState::instance()->m_CameraTrigeType == 0)//ģʽ + if (DetectState::instance()->m_CameraTrigeType == 0)//软件触发模式 { if (DetectState::instance()->bLockDetect == true) { //CC_Action(CC_AC_NEXT); @@ -1085,9 +1085,9 @@ Q_SLOT void lpMainWin::onServerState(QString Addr, int port, bool m_state) { QString str; if (m_state == true) - str = QString(tr("Ѵ")); + str = QString(tr("已打开")); else - str = QString(tr("ѹر")); + str = QString(tr("已关闭")); QString strMsg = QString("serverIP %1 port %2 %3.").arg(Addr).arg(port).arg(str); m_pCtrl->addLog(m_pCtrl->getUserName() + ":" + strMsg, emTypeRunState); } @@ -1118,7 +1118,7 @@ Q_SLOT void lpMainWin::onShutDownComputer() //*********************************************************************** Q_SLOT void lpMainWin::onPulseTimer() { - // + //心跳包发送 if (m_pNet) { m_pNet->sendPulse(6000, DetectState::instance()->IsDetect, DetectState::instance()->IsOnline); @@ -1150,7 +1150,7 @@ Q_SLOT void lpMainWin::onGetImg() { ui.main_lb_res_model_pic->setStyleSheet(QString("QLabel{border: 1px solid rgb(0,0,0,250);background-color: rgb(200, 200, 200);}")); } -//չʾϢ +//展示信息 Q_SLOT void lpMainWin::onShowMsg(QString str) { // QPulpewidget *pw = new QPulpewidget(); @@ -1193,16 +1193,16 @@ void lpMainWin::onInitAbout() "

%3:www.hzleaper.com

" "

%4:%5

" "

%6:%7

" - "

%8%9

" + "

%8:%9

" "

" - ).arg(tr("ͺʶϵͳ")) - .arg(tr("ɺƼͺʶͷ࣬ɴˮϵͳʹ")) - .arg(tr("Ҫһ˽òƷϢǵվ")) - .arg(tr("汾")).arg(111) - //.arg(tr("㷨汾")).arg(strWhelAlgoType) - .arg(tr("㷨汾")).arg(111) - .arg(tr("ʱ")).arg(111) - .arg(tr("Ȩ (c) Ƽ޹˾ ")); + ).arg(tr("轮毂型号识别系统")) + .arg(tr("本软件由杭州利珀科技开发,用于轮毂型号识别和分类,可搭配流水线运输系统使用")) + .arg(tr("若需要进一步了解该产品的相关信息,请访问我们的网站")) + .arg(tr("软件版本")).arg(111) + //.arg(tr("算法版本")).arg(strWhelAlgoType) + .arg(tr("算法版本")).arg(111) + .arg(tr("最后更新时间")).arg(111) + .arg(tr("版权 (c) 属 杭州利珀科技有限公司 所有")); m_aboutDlg.setFixedSize(500, 300); //QLabel* lbTitle = new QLabel(m_lightBox); //QLabel* lbTitle = new QLabel(&m_mainWidget); @@ -1219,7 +1219,7 @@ void lpMainWin::onInitAbout() QPalette pl = pEdit->palette(); pl.setBrush(QPalette::Base, QBrush(QColor(255, 0, 0, 0))); pEdit->setPalette(pl); - QPushButton* lbClose = new QPushButton(tr("ر")); + QPushButton* lbClose = new QPushButton(tr("关闭")); //QGridLayout* lbLayout = new QGridLayout(m_lightBox); QGridLayout* lbLayout = new QGridLayout(&m_aboutDlg); //lbLayout->addWidget(lbTitle, 1, 1); @@ -1237,15 +1237,15 @@ void lpMainWin::onShowResult(Result2Ui* pRlt) if (!pRlt) return; /* - ui.main_lb_res_model_pic;//ƥͼ - ui.main_lb_res_okng;//ƥ OK NG - ui.main_lb_res_model_id;//ƥͺ - ui.main_lb_res_model_score;//ƥ - ui.main_lb_res_model_thickness;// - ui.main_lb_res_model_diameter;//ֱ - ui.main_lb_res_model_time;//ʶʱʱ - ui.main_lb_res_ok_num;//ʶ - ui.main_lb_res_ng_num;//NG + ui.main_lb_res_model_pic;//匹配结果图 + ui.main_lb_res_okng;//匹配结果 OK NG + ui.main_lb_res_model_id;//匹配型号 + ui.main_lb_res_model_score;//匹配分数 + ui.main_lb_res_model_thickness;//厚度 + ui.main_lb_res_model_diameter;//直径 + ui.main_lb_res_model_time;//识别耗时时间 + ui.main_lb_res_ok_num;//识别总数 + ui.main_lb_res_ng_num;//NG 数量 */ int scareh = ui.main_lb_res_model_pic->height(); @@ -1336,7 +1336,7 @@ void lpMainWin::SendResultBee(emTypeBee m_Type, int num) //} if (m_Type == LIGHT_REDBEE) { - m_pNet->sendLight(0, 1, 500, 500);// + m_pNet->sendLight(0, 1, 500, 500);//红灯 } else if (m_Type == LIGHT_GREENBEE) { m_pNet->sendLight(2, 1, 500, 500); @@ -1375,12 +1375,12 @@ void lpMainWin::SendResultChannel2PLC(Result2Ui* m_Res) if (defaultInfo) { nResultChannel = defaultInfo->m_value; - emit(sgShowChannelRes(defaultInfo->m_ChannelName + tr("(Ĭ)"))); + emit(sgShowChannelRes(defaultInfo->m_ChannelName + tr("(默认)"))); } else { nResultChannel = 1000; - emit(sgShowChannelRes(tr("Ĭͨ ֵ1000"))); + emit(sgShowChannelRes(tr("默认通道 值1000"))); } if (m_pNet) @@ -1406,12 +1406,12 @@ void lpMainWin::SendResultChannelCOM(Result2Ui* m_Res) // if (defaultInfo) // { // frame.data1 = defaultInfo->m_value; - // emit(sgShowChannelRes(defaultInfo->m_ChannelName + QString(tr("(Ĭ)")))); + // emit(sgShowChannelRes(defaultInfo->m_ChannelName + QString(tr("(默认)")))); // } // else // { // frame.data1 = 1000; - // emit(sgShowChannelRes(tr("Ĭͨ ֵ1000"))); + // emit(sgShowChannelRes(tr("默认通道 值1000"))); // } // SendDataToCom(0x47, frame); //} @@ -1476,7 +1476,7 @@ void lpMainWin::saveImage(Result2Ui* pRes) } void lpMainWin::saveImage(const QPixmap& m_pixmap, QString m_path, QString filename) -{//̱߳ͼ +{//启动多线程保存图像 SaveImgThread *workTread = new SaveImgThread(this); workTread->setPixmap(m_pixmap, m_path, filename); connect(workTread, &SaveImgThread::finished, workTread, &QObject::deleteLater); diff --git a/tpvs17/tpMain/lpmain_en.ts b/tpvs17/tpMain/lpmain_en.ts new file mode 100644 index 0000000..de8eb06 --- /dev/null +++ b/tpvs17/tpMain/lpmain_en.ts @@ -0,0 +1,2453 @@ + + + + + CChannelInfo + + + 开始读取json文件数据... + + + + + 数据读取完成... + + + + + CWheelNet + + + IP参数设置 + + + + + ModelsModel + + + + 型号 + + + + + 数量 + + + + + ProgressView + + + 取消 + + + + + QAddChannelDlg + + + 新建通道 + + + + + 发送结果: + + + + + 通道名称: + + + + + 备注: + + + + + 确认 + + + + + 取消 + + + + + 警告 + + + + + 数据不能为空,请输入 + + + + + QAddModel + + + 新建模板 + + + + + 轮毂信息: + + + + + 轮毂型号 + + + + + + + 0 + + + + + 直径(mm) + + + + + 厚度(mm) + + + + + 旋转次数 + + + + + 确定 + + + + + 取消 + + + + + 提醒 + + + + + 信息不能为空! + + + + + QAddTimeDlg + + + 时间参数设置 + + + + + 确认 + + + + + 取消 + + + + + 时间参数: + + + + + 起始时间 + + + + + 班次名称: + + + + + + hh:mm + + + + + 结束时间 + + + + + + 当天 + + + + + + 隔天 + + + + + QCamSettingDlg + + + 相机配置 + + + + + 序列号: + + + + + 显示名称: + + + + + 相机类型: + + + + + 路径: + + + + + 设置 + + + + + 图像高度: + + + + + 图像宽度: + + + + + 图像格式: + + + + + 增益: + + + + + 曝光: + + + + + 应用 + + + + + 内触发 + + + + + 外触发 + + + + + 软触发 + + + + + 打开 + + + + + 触发 + + + + + QChannelManager + + + 通道信息管理 + + + + + 所有通道数据 + + + + + 发送结果: + + + + + 通道名称: + + + + + 备注: + + + + + 是否设为默认(NG流向的通道) + + + + + 确认修改 + + + + + 退出 + + + + + 编号 + + + + + 通道名 + + + + + 备注 + + + + + 发送结果 + + + + + 是否为默认 + + + + + 默认 + + + + + QChannelMgrDlg + + + QChannelMgrDlg + + + + + 所有型号及图像 + + + + + 型号: + + + + + 通道: + + + + + 查找: + + + + + + 隐藏 + + + + + 修改 + + + + + 0 + + + + + 通道分配: + + + + + 删除通道 + + + + + 增加通道 + + + + + 刷新 + + + + + 通道管理 + + + + + QDebugDlg + + + QDebugDlg + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'SimSun'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">右侧是算法裁剪后的图像、匹配的型号、算法匹配的最小阈值、匹配模板对应的直径和厚度(新建模板时输入的)</p></body></html> + + + + + 000000 + + + + + 0.0 + + + + + 厚度mm: + + + + + + 0 + + + + + 直径mm: + + + + + 开始模拟检测 + + + + + 采集一张 + + + + + + ��ʼģ������ + + + + + ֹͣ + + + + + QDia2ThSetting + + + 直径标定 + + + + + K:表示斜率,B:基准点,直径=高度*K+B + + + + + 确认修改 + + + + + 退出 + + + + + B: + + + + + K: + + + + + 提示 + + + + + 修改完成,参数已生效! + + + + + 确定 + + + + + QIPConfigDlg + + + QIPConfigDlg + + + + + 本机服务器IP地址设置 + + + + + + IP 地址(I): + + + + + 关闭服务 + + + + + 开放端口: + + + + + 打开服务 + + + + + 目标客户端IP地址设置 + + + + + 源端口: + + + + + 确定 + + + + + QModNamedlg + + + 模板名修改 + + + + + 确认修改 + + + + + + 取消 + + + + + 缩略图: + + + + + TextLabel + + + + + 旧型号名: + + + + + 新型号名: + + + + + + 提示 + + + + + 新型号名不能为空! + + + + + 型号库中已包含该型号,请重新设置型号名! + + + + + 确认 + + + + + QModelMgrDlg + + + QModelMgrDlg + + + + + 轮毂信息: + + + + + 型号 + + + + + 0% + + + + + 阈值调节 + + + + + 严格 + + + + + 旋转次数 + + + + + 缩略图 + + + + + 宽松 + + + + + 厚度(mm) + + + + + 直径(mm) + + + + + 基本操作 + + + + + + 删除模板 + + + + + 训练当前模板 + + + + + 训练模板 + + + + + 添加新的模板 + + + + + 新建模板 + + + + + 训练所有模板,消耗时间会较长 + + + + + 训练全部 + + + + + 确认修改,每次修改模板的参数后都要确认修改才有效 + + + + + 修改确认 + + + + + 修改型号名 + + + + + 图片显示: + + + + + TextLabel + + + + + + 添加已裁剪的轮毂图片 + + + + + 追加 + + + + + + 删除所有模板 + + + + + 模板型号查询 + + + + + 查找: + + + + + 数量 + + + + + modelID + + + + + + + + + + + + + + + + + + ��ʾ + + + + + + ��ѡ��һ����Ҫ׷��ͼ�����ͺţ� + + + + + ����ͼ�� + + + + + ͼ��������,���Ժ�..... + + + + + ����ʧ�ܣ��������Ӵ����ⱳ����ͼƬ��Ϊģ�壡���� + + + + + �������� + + + + + + + ��ѡ��һ����Ҫ�޸ĵ��ͺţ� + + + + + �޸���ģ�� + + + + + �IJ��� + + + + + �޸ijɹ��� + + + + + + ��ѡ��һ����Ҫɾ�����ͺ� + + + + + ������ɾ��ģ�尴ť + + + + + �Ƿ�ɾ���ͺ� + + + + + ��Ʒģ�� + + + + + ɾ����ģ�� + + + + + + + + + + + + �� + + + + + + + + + ���ͺ� + + + + + ����������ģ�尴ť + + + + + ��Ʒ��Ϣ���� + + + + + ������һ���µ�ģ�� + + + + + ��ѡ��һ����Ҫѵ�����ͺţ� + + + + + + ѵ��ģ���߳�δ�˳������Ե� + + + + + ���������ͺ�ģ����������ѵ�����ڼ�ϵͳ�ļ��⹦�ܽ�������������ֱ��ģ��ѵ�����ɣ�ȫ������ѵ��ģ�彫��Ҫ�ܳ�ʱ�䣬�ڼ佫���ܽ��������������Ƿ�����ִ�У� + + + + + ȷ��ɾ����ͼ��? + + + + + ģ��ͼƬɾ�� + + + + + + + ��ͼ�� + + + + + ���� + + + + + ����ɾ��ģ������������ģ�壬�Ƿ������� + + + + + �ٴ�ȷ�ϣ��Ƿ�ȫ��ɾ���� + + + + + û��ģ��!!! + + + + + ȫ��ɾ������!!! + + + + + ͼ���������� + + + + + ��,�뼰ʱ����ѵ������ + + + + + + + + + + + ģ�����½��� + + + + + ���ڳ�ʼ������ģ�� ����Ҫѵ��%1��ģ��,���Ժ�..... + + + + + ����ѵ��%1��ģ�� ������%2/%3,���Ժ�..... + + + + + %1��ģ����ȡ���� ������%2/%3,���Ժ�..... + + + + + %1��ģ��ѵ������ ������%2/%3,���Ժ�..... + + + + + ȫ��ģ���������ɣ�%1s + + + + + ��ȫ��ģ������������ѵ������%1��ģ�� + + + + + ģ������׼�����Ժ�..... + + + + + + + + + + + + + + + + ģ��ѵ������ + + + + + + %1�ͺ�û��ͼƬ����ѵ���� + + + + + %1��ģ�� ���ڻ�ȡ����ֵ,���Ժ�.... + + + + + ѵ�����ɣ�%1s + + + + + ѵ����ģ��:%1 + + + + + ȷ�� + + + + + ȡ�� + + + + + QMySplashScreen + + + 程序正在启动... + + + + + QObject + + + 虚拟相机触发 + + + + + 硬件相机触发 + + + + + 调试免登陆 + + + + + 正常工作模式 + + + + + 传感器触发 + + + + + 软件触发 + + + + + 下降沿触发 + + + + + 上升沿触发 + + + + + QSettingDlg + + + QSettingDlg + + + + + QShowImg + + + 检测背景图像显示 + + + + + 退出 + + + + + 我要更换背景 + + + + + pic + + + + + 没有用于检测的背景图,请更换检测背景 + + + + + QSystemSettingDlg + + + 相关设备配置 + + + + + + 检测图像设置 + + + + + + PLC相关设置 + + + + + + 报警灯测试 + + + + + 高级功能 + + + + + 属性 + + + + + 值 + + + + + 语言 + + + + + 检测背景更换 + + + + + + 抠图后 + + + + + + 原图 + + + + + 检测结果 + + + + + 图像保存路径 + + + + + + 设置保存路径 + + + + + + 打开图像路径 + + + + + 保存当前设置 + + + + + + 保存已匹配图 + + + + + + 保存无匹配图 + + + + + 轮毂全去A通道 + + + + + 查看检测背景 + + + + + 保存参数 + + + + + + 保存设置 + + + + + 传感器触发滤波(ms) + + + + + 相机触发延时(ms) + + + + + 相机触发脉宽(ms) + + + + + 光源熄灭延时时间(ms) + + + + + 传感器触发类型 + + + + + 保持结果时长(ms) + + + + + 连接超时次数 + + + + + 超时是否显示信息 + + + + + + 是否自动重启服务器 + + + + + 是否保存超时日志 + + + + + 发送并保存 + + + + + 超时提醒n次后自动重启服务 + + + + + 是否显示提示 + + + + + 勾选后通信超时时会显示提醒信息 + + + + + 勾选后通信超时次数达到后,系统将自动重启服务,PLC会自动重新连接 + + + + + 保存信息到系统日志 + + + + + 勾选后表示超时信息将自动保存到系统日志中,便于查询 + + + + + 红灯 + + + + + 绿灯 + + + + + 黄灯 + + + + + 蜂鸣 + + + + + 红灯闪一下 + + + + + 绿灯闪一下 + + + + + 黄灯闪一下 + + + + + 蜂鸣响一下 + + + + + 开发者使用 + + + + + 相机模式 + + + + + 虚拟相机触发时间 + + + + + 系统模式 + + + + + 相机触发模式 + + + + + + 串口发送心跳包 + + + + + + 网络发送心跳包 + + + + + + 串口发送通道结果 + + + + + + 网络发送检测结果 + + + + + + 网络发送通道结果 + + + + + 光栅使用标志 + + + + + 保存高度厚度数据 + + + + + 通道分配 + + + + + 启动时是否检测 + + + + + 显示厚度数据 + + + + + 显示厚度采样数据 + + + + + 使用光栅获取厚度 + + + + + 保存数据用于测试 + + + + + 是否使用通道分配 + + + + + 是否启动就开始检测 + + + + + + 是否显示 + + + + + 保存 + + + + + 请选择您的背景图 + + + + + 提示 + + + + + 背景图更新完成,请重启本软件. + + + + + 确认 + + + + + 打开文件夹 + + + + + QSystemSettingUI + + + 系统设置 + + + + + QTimeMgrDlg + + + 班次管理 + + + + + 未选中 + + + + + 添加时间 + + + + + 删除时间 + + + + + 修改时间 + + + + + + + + + + + ���� + + + + + ��ʼʱ�� + + + + + ����ʱ�� + + + + + ���ò��� + + + + + + δѡ�� + + + + + + + ��ʾ + + + + + + δѡ�����Σ���ѡ�������޸ġ� + + + + + + + ȷ�� + + + + + ��ȷ��Ҫɾ�� %1 ���Σ� + + + + + ȡ�� + + + + + QWorkItemDlg + + + 工单信息设置 + + + + + + 警告 + + + + + 名称不能为空. + + + + + 你输入的名称:%1 重复. + + + + + QWorkItemUI + + + 信息设置 + + + + + 确定 + + + + + 取消 + + + + + 备注信息: + + + + + 名称: + + + + + QWorkMgrUI + + + QWorkMgrUI + + + + + 工作任务表 + + + + + 添加任务单 + + + + + 添加 + + + + + 删除任务单 + + + + + 删除 + + + + + 修改任务单名称或备注信息 + + + + + 修改 + + + + + 使用任务单 + + + + + 应用 + + + + + 当前选择的任务表: + + + + + + 数量 + + + + + 添加型号到检测列表 + + + + + <<< + + + + + 从检测列表移除所选型号 + + + + + >>> + + + + + 缩略图 + + + + + 只看已选 + + + + + 只看未选 + + + + + 显示全部 + + + + + 查找: + + + + + 其他 + + + + + 按照直径检测 + + + + + 按照厚度检测 + + + + + 手动发送模板库 + + + + + 检测模板管理 + + + + + + 共 %1 个 + + + + + 当前使用的工单为 %1 + + + + + 以下型号为重复添加: +%1已被忽略. + + + + + 提醒 + + + + + + + 确定 + + + + + 工单 %1 被设为应用 + + + + + 发送模板库 + + + + + + 警告 + + + + + %1任务单正在使用不能被删除,请先切换到其他任务单,再删除该任务单? + + + + + + 取消 + + + + + 是否要删除 %1 模型? + + + + + 序号 + + + + + 内容 + + + + + RoiImgViewer + + + + line item is not created + + + + + line item is already created + + + + + rect item is already created + + + + + WheelCtrl + + + 加载通道模块 .... + + + + + 加载模板库 .... + + + + + 加载检测设置模块 .... + + + + + 加载数据库 .... + + + + + 加载班次管理模块 .... + + + + + 加载其他模块 .... + + + + + 创建子线程 .... + + + + + 加载光栅通讯模块 .... + + + + + 模块加载完成,启动线程 .... + + + + + 未登录 + + + + + lpMainWin + + + 轮毂型号识别 + + + + + image_zoom.ui + + + + + 状态信息 + + + + + 开始检测 + + + + + 检测结果 + + + + + 无匹配(个) + + + + + 已检测(个) + + + + + 匹配值 + + + + + 直径(mm) + + + + + 时间(s) + + + + + 通道 + + + + + + + + + + + 0 + + + + + --------- + + + + + None + + + + + 检测状态 + + + + + 厚度(mm) + + + + + 统计结果 + + + + + modelID_detect + + + + + count + + + + + 交换班清零 + + + + + 型号数量 + + + + + 模板管理 + + + + + 数据查询 + + + + + 模板勾选 + + + + + 辅助工具 + + + + + 班次设置 + + + + + 光栅标定 + + + + + IP设置 + + + + + 关于 + + + + + 登录 + + + + + 用户管理 + + + + + 系统设置 + + + + + 相机配置 + + + + + ���ر�Ҫģ��..... + + + + + + + ���� + + + + + ϵͳʱ�� + + + + + ������Ϣ + + + + + ����״̬ + + + + + �û��� + + + + + ��ʷ + + + + + ϵͳ��ʼ������... + + + + + ��ʾʶ������ + + + + + ����ͼ���ͱ���ͼ��һ�������������ⱳ���� + + + + + ����!!!��������%1��δʶ���ͺ� + + + + + ,δ�������⹦�����ɵ� + + + + + ����ͼ��,���ڼ�����... + + + + + ע �� + + + + + �� ¼ + + + + + ���ι��� + + + + + ���Թ��� + + + + + ģ������ + + + + + ϵͳ�������� + + + + + �������� + + + + + ֹͣ���� + + + + + �����˿�ʼ���ⰴť�����⹦�ܿ��� + + + + + ��ʼ���� + + + + + ������ֹͣ���ⰴť�����⹦�ܹر� + + + + + ��ʾ + + + + + �������������� + + + + + ȷ�� + + + + + ȡ�� + + + + + ���������㰴ť������ȫ������ + + + + + ϵͳʱ�䣺 + + + + + ����״̬: + + + + + ������... + + + + + δ����... + + + + + ������Ϣ�� + + + + + ��ʱ����δ���ð��� + + + + + ��ǰ�û��� + + + + + ģ���ⷢ������ + + + + + + ���ڼ����ͺ��� + + + + + ������ + + + + + �ѶϿ� + + + + + PLC���յ��������ò����� + + + + + �Ѵ��� + + + + + �ѹر� + + + + + �����ͺ�ʶ��ϵͳ + + + + + �������ɺ��������Ƽ����������������ͺ�ʶ���ͷ��࣬�ɴ�����ˮ������ϵͳʹ�� + + + + + ����Ҫ��һ���˽��ò�Ʒ��������Ϣ�����������ǵ���վ + + + + + �����汾 + + + + + �㷨�汾 + + + + + ��������ʱ�� + + + + + ��Ȩ (c) �� ���������Ƽ����޹�˾ ���� + + + + + �ر� + + + + + (Ĭ��) + + + + + Ĭ��ͨ�� ֵ1000 + + + + diff --git a/tpvs17/tpMain/tpMain.vcxproj b/tpvs17/tpMain/tpMain.vcxproj index 6488ea4..4b986d5 100644 --- a/tpvs17/tpMain/tpMain.vcxproj +++ b/tpvs17/tpMain/tpMain.vcxproj @@ -415,6 +415,7 @@ + @@ -1287,6 +1288,9 @@ "$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)" + + + {A229CF5C-81EF-4909-AB6E-49C746F1ED4C} Qt4VSv1.0 diff --git a/tpvs17/tpMain/tpMain.vcxproj.filters b/tpvs17/tpMain/tpMain.vcxproj.filters index 211a99f..b6e5303 100644 --- a/tpvs17/tpMain/tpMain.vcxproj.filters +++ b/tpvs17/tpMain/tpMain.vcxproj.filters @@ -87,6 +87,11 @@ {2ebbabc3-5d96-4349-a29c-19d33c06f9f2} + + {639EADAA-A684-42e4-A9AD-28FC9BCB8F7C} + ts + false + @@ -688,6 +693,9 @@ Generated Files + + Header Files + @@ -1065,4 +1073,9 @@ + + + Translation Files + + \ No newline at end of file diff --git a/tpvs17/tpMain/tpmain_en.qm b/tpvs17/tpMain/tpmain_en.qm deleted file mode 100644 index 063eea37f04501565bb87930f07dc6c3800d7813..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17842 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 G#QY!XG8&iw diff --git a/tpvs17/tpMain/tpmain_en.ts b/tpvs17/tpMain/tpmain_en.ts deleted file mode 100644 index 1a40bff..0000000 --- a/tpvs17/tpMain/tpmain_en.ts +++ /dev/null @@ -1,3349 +0,0 @@ - - - - - CChannelInfo - - - 开始读取json文件数据... - Start reading the json file data... - - - - 数据读取完成... - Data read complete... - - - - CHannelUI - - - 通道信息 - Channel Info - - - - 提示 - Info - - - - 你确定要删除通道? - Are you sure you want to delete the channel? - - - - 确认 - OK - - - - 取消 - Cancel - - - - 未分配 - undistributed - - - - 共 %1 个记录 - %1 records - - - - 修改成功 - modify successfully - - - - CWheelNet - - - IP参数设置 - IP config - IP config - - - - ConnectModeUi - - - 无 - None - - - - - - 编辑 - edit - - - - 取消 - Cancel - - - - 保存完成 - Saved Finish - - - - 发送模板库 - Send template library - - - - 共 - - - - - 个记录 - records - - - - DebugUI - - - 调试工具 - debugging tool - - - - 图像 - image - - - - 0.0 - 0.0 - - - - - 0 - 0 - - - - 直径mm: - diameter mm - - - - 000000 - 00000 - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'SimSun'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">右侧是算法裁剪后的图像、匹配的型号、算法匹配的最小阈值、匹配模板对应的直径和厚度(新建模板时输入的)</p></body></html> - < !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li{空白:预换行;} -< /风格> < /头> <身体风格= "字体类型:“SimSun”;字体大小:9分;粗细:400;字体样式:正常;" > -< p风格= " margin-top:12 px;margin-bottom:12 px;margin-left:0 px;margin-right: 0 px;-qt-block-indent:0;indent:0 px;" >右侧是算法裁剪后的图像,匹配的型号,算法匹配的最小阈值,匹配模板对应的直径和厚度(新建模板时输入的)< / p > < /身体> < / html > - - - - 厚度mm: - height mm - - - - 开始模拟检测 - SoftDetect - - - - 采集一张 - Get one - - - - 触发一张 - Triger One - - - - 设置 - Setting - Setting - - - - DevelopUi - - - - 相关设备配置 - - - - - - 检测图像设置 - - - - - - PLC相关设置 - - - - - - 报警灯测试 - Alarm lamp test - - - - - 开发者使用 - Developer - - - - 检测状态 - Detection status - - - - 打开文件夹 - open folder - - - - 停止虚拟检测 - Stop detection - - - - 开始虚拟检测 - Start vdetection - - - - 属性 - property - - - - 值 - Value - Value - - - - 打开配置页面 - - - - - 语言 - - - - - 检测背景更换 - - - - - - 抠图后 - - - - - - 原图 - - - - - 检测结果 - - - - - 图像保存路径 - - - - - - 设置保存路径 - - - - - - 打开图像路径 - - - - - 保存当前设置 - - - - - - 保存已匹配图 - - - - - - 保存无匹配图 - - - - - 轮毂全去A通道 - - - - - 查看检测背景 - - - - - 保存参数 - - - - - - 保存设置 - - - - - 传感器触发滤波(ms) - - - - - 相机触发延时(ms) - - - - - 相机触发脉宽(ms) - - - - - 光源熄灭延时时间(ms) - - - - - 传感器触发类型 - - - - - 保持结果时长(ms) - - - - - 连接超时次数 - - - - - 超时是否显示信息 - - - - - - 是否自动重启服务器 - - - - - 是否保存超时日志 - - - - - 发送并保存 - - - - - 超时提醒n次后自动重启服务 - - - - - 是否显示提示 - - - - - 勾选后通信超时时会显示提醒信息 - - - - - 勾选后通信超时次数达到后,系统将自动重启服务,PLC会自动重新连接 - - - - - 保存信息到系统日志 - - - - - 勾选后表示超时信息将自动保存到系统日志中,便于查询 - - - - - 红灯 - - - - - 绿灯 - - - - - 黄灯 - - - - - 蜂鸣 - - - - - 红灯闪一下 - - - - - 绿灯闪一下 - - - - - 黄灯闪一下 - - - - - 蜂鸣响一下 - - - - - 相机模式 - - - - - 虚拟相机触发时间 - - - - - 系统模式 - - - - - 相机触发模式 - - - - - - 串口发送心跳包 - - - - - - 网络发送心跳包 - - - - - - 串口发送通道结果 - - - - - - 网络发送检测结果 - - - - - - 网络发送通道结果 - - - - - 光栅使用标志 - - - - - 保存高度厚度数据 - - - - - 通道分配 - - - - - 启动时是否检测 - - - - - 显示厚度数据 - - - - - 显示厚度采样数据 - - - - - 使用光栅获取厚度 - - - - - 保存数据用于测试 - - - - - 是否使用通道分配 - - - - - 是否启动就开始检测 - - - - - - 是否显示 - - - - - 保存 - Save - Save - - - - 保存完成 - Saved Finish - - - - 数据已发送并保存 - - - - - 请选择您的背景图 - - - - - 提示 - Info - Info - - - - 背景图更新完成,请重启本软件. - Background image updated, please restart this software. - - - - 确认 - OK - - - - MainUi - - - 关于 - About - About - - - - - 轮毂型号识别系统 - Hub model recognition system - - - - 提示 - Info - - - - 将清空所有数据 - All data will be cleared - - - - 确定 - Sure - - - - 取消 - Cancel - - - - 按下了清零按钮,数据全部清零 - Press the reset button, the data is reset - - - - 停止检测 - Stop - Stop - - - - 按下了开始检测按钮,检测功能开启 - Press the start detection button, and the detection function is on - - - - 开始检测 - Start - Start - - - - 按下了停止检测按钮,检测功能关闭 - Press the stop detection button, and the detection function is off - - - - 本软件由杭州利珀科技开发,用于轮毂型号识别和分类,可搭配流水线运输系统使用 - The software developed by hangzhou leaper technology, for the hub model identification and classification, can be used with pipeline transport system - - - - 若需要进一步了解该产品的相关信息,请访问我们的网站 - For more information about this product, please visit our website - - - - 软件版本 - software version - - - - 算法版本 - algorithm Version - - - - 最后更新时间 - updatetime - - - - 版权 (c) 属 杭州利珀科技有限公司 所有 - Copyright (c) is owned by hangzhou leaper technology co., LTD - - - - 关闭 - Close - Close - - - - MainWindow - - - 轮毂型号识别系统 - Hub model recognition system - - - - image_zoom.ui - - - - - 状态信息 - - - - - 开始检测 - Start - Start - - - - 检测结果 - - - - - 无匹配(个) - - - - - 已检测(个) - - - - - 匹配值 - - - - - 直径(mm) - Diameter (mm): - - - - 时间(s) - times(s) - times(s) - - - - 通道 - - - - - - - - - - - 0 - 0 - - - - --------- - - - - - None - - - - - - TextLabel - - - - - 厚度(mm) - Thickness (mm): - - - - 统计结果 - - - - - modelID_detect - - - - - count - - - - - 交换班清零 - - - - - 工具栏 - - - - - font: 11pt "Consolas"; - - - - - - 模板管理 - - - - - QWfModelManage - - - - - - 数据查询 - - - - - qformcheckdlg - - - - - - 检测模板勾选 - - - - - 根据需要检测的模板进行勾选 - - - - - ModelUI - - - - - 辅助工具 - Tools - Tools - - - - 开发者专用 - - - - - DebugUI - - - - - - 班次设置 - - - - - TimeMgr - - - - - - 光栅标定 - - - - - qrasterdlg - - - - - IP设置 - IP Config - IP Config - - - - 本机软件IPServer设置 - - - - - qipconfigdlg - - - - - 关于 - About - About - - - - 关于本软件 - About this program - About this program - - - - 登录 - Login - Login - - - - 用户管理 - UserManager - UserManager - - - - ModelMgrUi - - - 按下了添加模板按钮 - - - - - 产品信息设置 - - - - - 添加了一个新的模型 - - - - - - - - - - - - 共 - with - - - - - - - - 个型号 - models - - - - - - - - - - - - - - - - - - 提示 - Info - - - - - 请选择一个您要追加图像的型号! - - - - - 加载图像 - - - - - 图像加载中,请稍后..... - Image loading, please wait... - - - - 添加失败,不能添加带检测背景的图片作为模板!!! - Failed to add image with detection background as template!!! - - - - 加载完成 - loading completed - - - - - - 请选择一个您要修改的型号! - - - - - 修改了模板 - - - - - 的参数 - parameter - - - - 修改成功! - - - - - - 请选择一个您要删除的型号 - - - - - 按下了删除模板按钮 - - - - - 是否删除型号 - - - - - 产品模板 - - - - - 删除了模板 - - - - - 确定删除该图像? - - - - - 模板图片删除 - - - - - - - 个图像 - - - - - 图像数量少于 - - - - - 个,请及时补充训练样本 - - - - - 该模板训练成功,可以正常使用 - - - - - 该模板没有训练,并且没有图像 - - - - - 该模板训练失败,请检查模板图片中是否有其他类型的图像或该模板是否被重复添加 - - - - - 请选择一个您要训练的型号! - - - - - - 训练模板线程未退出,请稍等 - - - - - 将对所有型号模板进行重新训练,期间系统的检测功能将不能正常运行直到模板训练完成,全部重新训练模板将需要很长时间,期间将不能进行其他工作,是否继续执行? - - - - - 正在检测,请停止检测后再操作!!! - - - - - - - - - - - 模板更新进度 - - - - - 正在初始化所有模板 共需要训练%1个模板,请稍后..... - - - - - 正在训练%1的模板 已完成%2/%3,请稍后..... - The template training %1 is complete %2/%3, please wait... - - - - %1的模板获取特征 已完成%2/%3,请稍后..... - Template capture feature for %1 is complete for %2/%3, please wait... - - - - %1的模板训练完成 已完成%2/%3,请稍后..... - Template training for %1 completed %2/%3, please wait... - - - - 全部模板更新完成!%1s - All templates updated!The %1 s - - - - 对全部模板进行了重新训练,共%1个模板 - - - - - 警告 - Waring - - - - 即将删除模板库里的所有模板,是否继续? - - - - - 再次确认,是否全部删除? - - - - - 没有模板!!! - - - - - 全部删除完成!!! - - - - - 模板正在准备请稍后..... - - - - - - - - - - - - - - - - 模板训练进度 - - - - - - %1型号没有图片不能训练! - - - - - %1的模板 正在获取特征值,请稍后.... - - - - - 训练完成!%1s - - - - - 训练了模板:%1 - - - - - 确认 - ok - - - - 取消 - Cancel - - - - ModelUI - - 模板型号库 - Template library - - - 按照厚度检测 - Thickness Detect - - - 全不选 - Select None - - - 全选 - select all - - - 反选 - Invert Select - - - 编辑 - edit - - - 查找: - Search: - - - - ModelsModel - - - - 型号 - Model - Model - - - - 数量 - Num - Num - - - - ProgressView - - - 取消 - Cancel - Cancel - - - - QAddChannelDlg - - - 新建通道 - Add New Channel - - - - 发送结果: - Result: - - - - 通道名称: - Channel Name: - - - - 备注: - About: - - - - 确认 - Sure - - - - 取消 - Cancel - - - - 警告 - Waring - - - - 数据不能为空,请输入 - Data cannot be empty. Please Check Input - - - - QAddModel - - - 新建模板 - Add New Model - - - - 轮毂信息: - Hub information: - - - - 轮毂型号 - hub type: - - - - - - 0 - 0 - - - - 直径(mm) - Diameter (mm): - - - - 厚度(mm) - Thickness (mm): - - - - 旋转次数 - rotate Num: - - - - 确定 - Sure - - - - 取消 - Cancel - - - - 提醒 - Warning - - - - 信息不能为空! - The message cannot be empty! - - - - QAddTimeDlg - - - 时间参数设置 - Time parameter setting - - - - 确认 - Sure - - - - 取消 - Cancel - - - - 时间参数: - time parameter - - - - 班次名称: - Flight Name: - - - - 起始时间 - starting time: - - - - 结束时间 - ending time: - - - - QChannelManager - - - 通道信息管理 - - - - - 所有通道数据 - - - - - 发送结果: - Result: - - - - 通道名称: - Channel Name: - - - - 备注: - About: - - - - 是否设为默认(NG流向的通道) - - - - - 确认修改 - - - - - 退出 - exit - - - - 编号 - - - - - 通道名 - - - - - 备注 - - - - - 发送结果 - - - - - 是否为默认 - - - - - 默认 - - - - - QDia2ThSetting - - - 直径标定 - - - - - K:表示斜率,B:基准点,直径=高度*K+B - - - - - 确认修改 - - - - - 退出 - exit - - - - B: - - - - - K: - - - - - 提示 - Info - - - - 修改完成,参数已生效! - - - - - 确定 - Sure - - - - QFormCheckDlg - - - 数据查询 - - - - - - 生产数据查询 - - - - - 生产数据统计 - - - - - 日志记录 - - - - - 设置 - Setting - - - - - 显示数据数(条) - - - - - - 50 - 00000 {50?} - - - - - 上一页 - - - - - - - - TextLabel - - - - - - 下一页 - - - - - 标题 - - - - - 双击单条记录显示图片 - - - - - - 开始日期时间: - - - - - - - - - - 2017-11-11 11:11:11 - 00000 {2017-11-11 11:11:11?} - - - - - 设置开始时间 - - - - - - - 结束日期时间: - - - - - - - 设置结束时间 - - - - - 筛选型号 - - - - - - 所有 - - - - - - 生产班次 - - - - - 全天 - - - - - 查询数量 - - - - - 0 - 0 - - - - - - 查询 - - - - - - - 导出CSV - - - - - 数据类型查询 - - - - - 起始日期时间: - - - - - 设置起始时间 - - - - - 报警记录查询 - - - - - 实时检测数据记录保存上限设置: - - - - - 数据保存上限时间: - - - - - 10年 - 00000 {10年?} - - - - 6年 - 00000 {6年?} - - - - 5年 - 00000 {5年?} - - - - 4年 - 00000 {4年?} - - - - 3年 - 00000 {3年?} - - - - 2年 - 00000 {2年?} - - - - 1年 - 00000 {1年?} - - - - 9个月 - - - - - 6个月 - - - - - 3个月 - - - - - 1个月 - - - - - 15天 - 00000 {15天?} - - - - 1天 - 00000 {1天?} - - - - 报警数据数量上限(条): - - - - - 确定并保存 - - - - - 我要修改 - - - - - 测试工具 - - - - - 手动删除旧数据 - - - - - 清空所有数据 - - - - - QIPConfigDlg - - - QIPConfigDlg - - - - - 本机服务器IP地址设置 - Local server IP address Settings - - - - - IP 地址(I): - IP Address - - - - 关闭服务 - Close Server - - - - 开放端口: - Port - - - - 打开服务 - Open Server - - - - 目标客户端IP地址设置 - Client IP address Settings - - - - 源端口: - - - - - 确定 - Sure - - - - QMainFilter - - - - Save received file - - - - - - All Files (*) - - - - - - Unable to open file - - - - - QMainFilter_WheelDetect - - - 提示 - Info - Info - - - - 输入的信息不能为空!!! - - - - - QMainFilter_WheelDetect_Child - - - 加载必要模块..... - Load necessary modules... - - - - 初始化UI..... - To initialize the UI... - - - - 绑定信号槽信息... - Bind signal slot information... - - - - 创建线程... - Create thread... - - - - 系统初始化完成... - System initialization complete... - - - - 程序退出,所有数据清零,服务器关闭,断开所有连接. - Program exit, all data reset, server close, disconnect all connections. - - - - 已打开 - Opened - - - - 已关闭 - closed - - - - 已连接 - - - - - 已断开 - - - - - 按下了模板管理按钮 - - - - - 按下了光栅标定按钮 - - - - - 按下了IP设置按钮 - - - - - 按下了发送模板库按钮 - - - - - 按下了设置生效按钮 - - - - - 停止虚拟检测 - Stop detection - - - - 开始虚拟检测 - Start vdetection - - - - 显示识别结果 - - - - - 相机图像和背景图不一样,请更换检测背景! - - - - - 警告!!!连续出现%1个未识别型号 - - - - - ,未开启检测功能造成的 - - - - - 获得图像,正在计算中... - - - - - 模板库发送完成 - - - - - 检测状态 - Detection status - - - - - 正在检测型号数 - - - - - - 登 录 - - - - - :已注销 - - - - - :已登录 - - - - - - - 提示 - Info - - - - 你确定要注销 - - - - - - - 确认 - Sure - - - - 取消 - Cancel - - - - - 该功能未启用. - - - - - - (默认) - - - - - - 默认通道 值1000 - - - - - 心跳包接收超时 - - - - - 准备重启TCP服务 - - - - - 心跳包超时 - - - - - 次 - - - - - PLC已收到相关设置参数! - - - - - 注 销 - LogOut - - - - QModNamedlg - - - 模板名修改 - - - - - 确认修改 - - - - - - 取消 - Cancel - - - - 缩略图: - - - - - TextLabel - - - - - 旧型号名: - - - - - 新型号名: - - - - - - 提示 - Info - - - - 新型号名不能为空! - - - - - 型号库中已包含该型号,请重新设置型号名! - - - - - 确认 - Sure - - - - QMySplashScreen - - - 程序正在启动... - The program is starting... - - - - QObject - - - 本软件是基于机器学习的基础开发而来,用户可通过本软件采集汽轮的图像进行轮毂型号训练,训练后的模型用于型号识别。 - - - - - 汽车轮毂识别算法 更新时间:20190117 16:04:00 - - - - - 摩托车轮毂识别算法 更新时间:20190117 18:04:00 - - - - - QShowImg - - - 检测背景图像显示 - Detection background image display - - - - 退出 - exit - - - - 我要更换背景 - change background - - - - pic - - - - - 没有用于检测的背景图,请更换检测背景 - There is no background image for testing. Please change the testing background - - - - QWfModelManage - - - - 模板管理 - - - - - 模板型号查询 - - - - - - 查找: - Search: - - - - 数量 - Num - - - - modelID - - - - - 轮毂信息: - Hub information: - - - - 型号 - Model: - - - - 0% - 00000 {0%?} - - - - 阈值调节 - - - - - 严格 - - - - - 旋转次数 - rotate Num: - - - - 缩略图 - - - - - 宽松 - - - - - 厚度(mm) - Thickness (mm): - - - - 直径(mm) - Diameter (mm): - - - - 图片显示: - - - - - - 添加已裁剪的轮毂图片 - - - - - 追加 - - - - - - 删除所有模板 - - - - - 基本操作 - - - - - - 删除模板 - - - - - 添加新的模板 - - - - - 新建模板 - Add New Model - - - - 训练当前模板 - - - - - 训练模板 - - - - - 训练所有模板,消耗时间会较长 - - - - - 训练全部 - - - - - 确认修改,每次修改模板的参数后都要确认修改才有效 - - - - - 修改确认 - - - - - 修改型号名 - - - - - 通道分配管理 - - - - - 所有型号及图像 - - - - - 型号: - - - - - 通道: - - - - - - 隐藏 - - - - - 修改 - - - - - 0 - 0 - - - - 通道分配: - - - - - 删除通道 - - - - - 增加通道 - - - - - 刷新 - - - - - 通道管理 - - - - - QWorkItemDlg - - - 工单信息设置 - - - - - - 警告 - Waring - - - - 名称不能为空. - - - - - 你输入的名称:%1 重复. - - - - - QWorkItemUI - - - 信息设置 - - - - - 确定 - Sure - - - - 取消 - Cancel - - - - 备注信息: - - - - - 名称: - - - - - QWorkMgrUI - - - QWorkMgrUI - - - - - 工作任务表 - - - - - 添加任务单 - - - - - 添加 - - - - - 删除任务单 - - - - - 删除 - - - - - 修改任务单名称或备注信息 - - - - - 修改 - - - - - 使用任务单 - - - - - 应用 - - - - - 当前选择的任务表: - - - - - - 数量 - Num - - - - 添加型号到检测列表 - - - - - <<< - - - - - 从检测列表移除所选型号 - - - - - >>> - - - - - 缩略图 - - - - - 只看已选 - - - - - 只看未选 - - - - - 显示全部 - - - - - 查找: - Search: - - - - 其他 - - - - - 按照直径检测 - - - - - 按照厚度检测 - Thickness Detect - - - - 手动发送模板库 - - - - - 检测模板管理 - - - - - - 共 %1 个 - - - - - 当前使用的工单为 %1 - - - - - 以下型号为重复添加: -%1已被忽略. - - - - - 提醒 - Warning - - - - - - 确定 - Sure - - - - 工单 %1 被设为应用 - - - - - 发送模板库 - Send template library - - - - - 警告 - Waring - - - - %1任务单正在使用不能被删除,请先切换到其他任务单,再删除该任务单? - - - - - - 取消 - Cancel - - - - 是否要删除 %1 模型? - - - - - 序号 - - - - - 内容 - - - - - Raster_Form - - - Form - - - - - 设备设置和测试 - - - - - 串口设备设置 - - - - - 串口名: - - - - - 查找设备 - - - - - <html><head/><body><p>串口设备设置,在需要使用光栅采集数据的情况下使用,并且需要设置正确的设备端口号才能正常与光栅设备通讯,否则通讯会失败。</p></body></html> - - - - - 波特率: - - - - - 串口打开状态 - - - - - 启动光栅采集数据功能 - - - - - - - 保存设置 - - - - - 打开串口 - - - - - 关闭串口 - - - - - 光栅数据采样 - - - - - 光栅未遮挡数: - - - - - 系统状态 - - - - - 光栅总数: - - - - - 63 - 00000 {63?} - - - - 被遮挡的起始位置: - - - - - 光栅遮挡数: - - - - - 轮毂数据标定 - - - - - 轮毂高度标定 - - - - - 中值滤波比例: - - - - - 光栅最小数值: - - - - - - - mm - - - - - 高度测量标定 - - - - - 基准高度: - - - - - 光栅倍率: - - - - - 采样容器大小: - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Consolas'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">高度测量,是基于光栅数据能正常采集的情况下进行的。</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">轮毂高度计算公式:</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">高度=光栅遮挡数*光栅倍率+基准高度</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">光栅遮挡数:是有物品挡住光栅时,光栅采样返回的数据</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">光栅倍率:是光栅自身的精度,每一格光栅所代表的高度是多少</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">基准高度:是在光栅无法照射的地方的高度大小,需要用直尺直接测量光栅底部与流水线的最低平面的距离</p></body></html> - - - - - 轮毂直径标定曲率: - - - - - B: - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Consolas'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">直径标定曲率:是用于校准算法计算出的轮毂直径与实际轮毂直径用的</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">曲率=轮毂高度*k+B 计算曲率的前提是轮毂的高度数据必须准确(误差小)</p></body></html> - - - - - K: - - - - - K:表示斜率,B:基准点,直径=高度*K+B - - - - - StationSettingDlg - - - 工位配置 - - - - - 确定并保存 - - - - - 相机设备配置 - - - - - 显示 - - - - - Key(*): - - - - - 工位1 - - - - - 相机类型(*): - - - - - Virtual Camera(100) - - - - - Baumer(160) - - - - - HIK(140) - - - - - 显示名称(*): - - - - - 唯一 - - - - - 相机参数 - - - - - 曝光: - - - - - 增益: - - - - - 格式: - - - - - GRAY8 - - - - - 保存参数 - - - - - 启用保存 - - - - - 保存图片后缀: - - - - - 是否保存: - - - - - .PNG - - - - - .BMP - - - - - .JPG - - - - - .JPEG - - - - - 保存图像的路径: - - - - - 修改 - - - - - 通讯设备配置: - - - - - 在使用的设备串口: - - - - - 设备名: - - - - - 波特率: - - - - - StatusBarUi - - - 系统时间 - - - - - 班次信息 - - - - - 检测状态 - Detection status - - - - 用户: - - - - - 系统时间: - - - - - 检测状态: - - - - - 检测中... - - - - - 未检测... - - - - - 班次信息: - - - - - 该时间段未设置班次 - - - - - 当前用户: - - - - - TimeMgr - - - Dialog - - - - - 未选中 - - - - - 添加时间 - - - - - 删除时间 - - - - - 修改时间 - - - - - TimeMgrUi - - - 班次 - - - - - 起始时间 - starting time: - - - - 结束时间 - ending time: - - - - 班次时间管理 - - - - - 设置参数 - - - - - - 未选中 - - - - - - - 提示 - Info - - - - - 未选择班次,请选择进行修改。 - - - - - - - 确认 - Sure - - - - 您确定要删除 %1 班次? - Are you sure you want to delete flight %1? - - - - 取消 - Cancel - Cancel - - - - ToolBarUi - - - 请选择您的背景图 - - - - - 提示 - Info - - - - 背景图更新完成,请重启本软件. - Background image updated, please restart this software. - - - - 确认 - Sure - - - 关于本软件 - About this program - About this program - - - - WheelCtrl - - - 加载通道模块 .... - - - - - 加载模板库 .... - - - - - 加载检测设置模块 .... - - - - - 加载数据库 .... - - - - - 加载班次管理模块 .... - - - - - 加载其他模块 .... - - - - - 创建子线程 .... - - - - - 加载光栅通讯模块 .... - - - - - 模块加载完成,启动线程 .... - - - - - 未登录 - not login - - - - WorkMgrUI - - 模板型号库 - Template library - - - 查找: - Search: - - - 全不选 - Select None - - - 全选 - select all - - - 反选 - Invert Select - - - 编辑 - edit - - - 按照厚度检测 - Thickness Detect - - - diff --git a/tpvs17/tpMain/tpmain_zh.qm b/tpvs17/tpMain/tpmain_zh.qm deleted file mode 100644 index 4565b578d7774640c1d9cec7804ee53cd8491f32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39222 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 - - - - CChannelInfo - - - 开始读取json文件数据... - 开始读取json文件数据... - - - - 数据读取完成... - 数据读取完成... - - - - CHannelUI - - - 通道信息 - - - - - 提示 - - - - - 你确定要删除通道? - - - - - 确认 - - - - - 取消 - - - - - 未分配 - - - - - 共 %1 个记录 - - - - - 修改成功 - - - - - CWheelNet - - - IP参数设置 - - - - - ConnectModeUi - - - 无 - - - - - - - 编辑 - - - - - 取消 - - - - - 保存完成 - - - - - 发送模板库 - - - - - 共 - - - - - 个记录 - - - - - DebugUI - - - 调试工具 - - - - - 图像 - - - - - 0.0 - - - - - - 0 - - - - - 直径mm: - - - - - 000000 - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'SimSun'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">右侧是算法裁剪后的图像、匹配的型号、算法匹配的最小阈值、匹配模板对应的直径和厚度(新建模板时输入的)</p></body></html> - - - - - 厚度mm: - - - - - 开始模拟检测 - - - - - 采集一张 - - - - - 触发一张 - - - - - 设置 - - - - - DevelopUi - - - - 相关设备配置 - - - - - - 检测图像设置 - - - - - - PLC相关设置 - - - - - - 报警灯测试 - - - - - - 开发者使用 - - - - - 检测状态 - - - - - 打开文件夹 - - - - - 停止虚拟检测 - - - - - 开始虚拟检测 - - - - - 属性 - - - - - 值 - - - - - 打开配置页面 - - - - - 语言 - - - - - 检测背景更换 - - - - - - 抠图后 - - - - - - 原图 - - - - - 检测结果 - - - - - 图像保存路径 - - - - - - 设置保存路径 - - - - - - 打开图像路径 - - - - - 保存当前设置 - - - - - - 保存已匹配图 - - - - - - 保存无匹配图 - - - - - 轮毂全去A通道 - - - - - 查看检测背景 - - - - - 保存参数 - - - - - - 保存设置 - - - - - 传感器触发滤波(ms) - - - - - 相机触发延时(ms) - - - - - 相机触发脉宽(ms) - - - - - 光源熄灭延时时间(ms) - - - - - 传感器触发类型 - - - - - 保持结果时长(ms) - - - - - 连接超时次数 - - - - - 超时是否显示信息 - - - - - - 是否自动重启服务器 - - - - - 是否保存超时日志 - - - - - 发送并保存 - - - - - 超时提醒n次后自动重启服务 - - - - - 是否显示提示 - - - - - 勾选后通信超时时会显示提醒信息 - - - - - 勾选后通信超时次数达到后,系统将自动重启服务,PLC会自动重新连接 - - - - - 保存信息到系统日志 - - - - - 勾选后表示超时信息将自动保存到系统日志中,便于查询 - - - - - 红灯 - - - - - 绿灯 - - - - - 黄灯 - - - - - 蜂鸣 - - - - - 红灯闪一下 - - - - - 绿灯闪一下 - - - - - 黄灯闪一下 - - - - - 蜂鸣响一下 - - - - - 相机模式 - - - - - 虚拟相机触发时间 - - - - - 系统模式 - - - - - 相机触发模式 - - - - - - 串口发送心跳包 - - - - - - 网络发送心跳包 - - - - - - 串口发送通道结果 - - - - - - 网络发送检测结果 - - - - - - 网络发送通道结果 - - - - - 光栅使用标志 - - - - - 保存高度厚度数据 - - - - - 通道分配 - - - - - 启动时是否检测 - - - - - 显示厚度数据 - - - - - 显示厚度采样数据 - - - - - 使用光栅获取厚度 - - - - - 保存数据用于测试 - - - - - 是否使用通道分配 - - - - - 是否启动就开始检测 - - - - - - 是否显示 - - - - - 保存 - - - - - 保存完成 - - - - - 数据已发送并保存 - - - - - 请选择您的背景图 - - - - - 提示 - - - - - 背景图更新完成,请重启本软件. - - - - - 确认 - - - - - MainUi - - - 关于 - - - - - - 轮毂型号识别系统 - - - - - 提示 - - - - - 将清空所有数据 - - - - - 确定 - - - - - 取消 - - - - - 按下了清零按钮,数据全部清零 - - - - - 停止检测 - - - - - 按下了开始检测按钮,检测功能开启 - - - - - 开始检测 - - - - - 按下了停止检测按钮,检测功能关闭 - - - - - 本软件由杭州利珀科技开发,用于轮毂型号识别和分类,可搭配流水线运输系统使用 - - - - - 若需要进一步了解该产品的相关信息,请访问我们的网站 - - - - - 软件版本 - - - - - 算法版本 - - - - - 最后更新时间 - - - - - 版权 (c) 属 杭州利珀科技有限公司 所有 - - - - - 关闭 - - - - - MainWindow - - - 轮毂型号识别系统 - 轮毂型号识别系统 - - - - image_zoom.ui - image_zoom.ui - - - - 状态信息 - 状态信息 - - - - 开始检测 - - - - - 检测结果 - - - - - 无匹配(个) - - - - - 已检测(个) - - - - - 匹配值 - - - - - 直径(mm) - - - - - 时间(s) - - - - - 通道 - - - - - - - - - - - 0 - - - - - --------- - - - - - None - - - - - - TextLabel - - - - - 厚度(mm) - - - - - 统计结果 - - - - - modelID_detect - - - - - count - - - - - 交换班清零 - - - - - 工具栏 - - - - - font: 11pt "Consolas"; - - - - - - 模板管理 - - - - - QWfModelManage - - - - - - 数据查询 - - - - - qformcheckdlg - - - - - - 检测模板勾选 - - - - - 根据需要检测的模板进行勾选 - - - - - ModelUI - - - - - 辅助工具 - - - - - 开发者专用 - - - - - DebugUI - - - - - - 班次设置 - - - - - TimeMgr - - - - - - 光栅标定 - - - - - qrasterdlg - - - - - IP设置 - - - - - 本机软件IPServer设置 - - - - - qipconfigdlg - - - - - 关于 - - - - - 关于本软件 - - - - - 登录 - - - - - 用户管理 - - - - - ModelMgrUi - - - 按下了添加模板按钮 - - - - - 产品信息设置 - - - - - 添加了一个新的模型 - - - - - - - - - - - - 共 - - - - - - - - - 个型号 - - - - - - - - - - - - - - - - - - - 提示 - - - - - - 请选择一个您要追加图像的型号! - - - - - 加载图像 - - - - - 图像加载中,请稍后..... - - - - - 添加失败,不能添加带检测背景的图片作为模板!!! - - - - - 加载完成 - - - - - - - 请选择一个您要修改的型号! - - - - - 修改了模板 - - - - - 的参数 - - - - - 修改成功! - - - - - - 请选择一个您要删除的型号 - - - - - 按下了删除模板按钮 - - - - - 是否删除型号 - - - - - 产品模板 - - - - - 删除了模板 - - - - - 确定删除该图像? - - - - - 模板图片删除 - - - - - - - 个图像 - - - - - 图像数量少于 - - - - - 个,请及时补充训练样本 - - - - - 该模板训练成功,可以正常使用 - - - - - 该模板没有训练,并且没有图像 - - - - - 该模板训练失败,请检查模板图片中是否有其他类型的图像或该模板是否被重复添加 - - - - - 请选择一个您要训练的型号! - - - - - - 训练模板线程未退出,请稍等 - - - - - 将对所有型号模板进行重新训练,期间系统的检测功能将不能正常运行直到模板训练完成,全部重新训练模板将需要很长时间,期间将不能进行其他工作,是否继续执行? - - - - - 正在检测,请停止检测后再操作!!! - - - - - - - - - - - 模板更新进度 - - - - - 正在初始化所有模板 共需要训练%1个模板,请稍后..... - - - - - 正在训练%1的模板 已完成%2/%3,请稍后..... - - - - - %1的模板获取特征 已完成%2/%3,请稍后..... - - - - - %1的模板训练完成 已完成%2/%3,请稍后..... - - - - - 全部模板更新完成!%1s - - - - - 对全部模板进行了重新训练,共%1个模板 - - - - - 警告 - - - - - 即将删除模板库里的所有模板,是否继续? - - - - - 再次确认,是否全部删除? - - - - - 没有模板!!! - - - - - 全部删除完成!!! - - - - - 模板正在准备请稍后..... - - - - - - - - - - - - - - - - 模板训练进度 - - - - - - %1型号没有图片不能训练! - - - - - %1的模板 正在获取特征值,请稍后.... - - - - - 训练完成!%1s - - - - - 训练了模板:%1 - - - - - 确认 - - - - - 取消 - - - - - ModelsModel - - - - 型号 - - - - - 数量 - - - - - ProgressView - - - 取消 - - - - - QAddChannelDlg - - - 新建通道 - - - - - 发送结果: - - - - - 通道名称: - - - - - 备注: - - - - - 确认 - - - - - 取消 - - - - - 警告 - - - - - 数据不能为空,请输入 - - - - - QAddModel - - - 新建模板 - - - - - 轮毂信息: - - - - - 轮毂型号 - - - - - - - 0 - - - - - 直径(mm) - - - - - 厚度(mm) - - - - - 旋转次数 - - - - - 确定 - - - - - 取消 - - - - - 提醒 - - - - - 信息不能为空! - - - - - QAddTimeDlg - - - 时间参数设置 - - - - - 确认 - - - - - 取消 - - - - - 时间参数: - - - - - 班次名称: - - - - - 起始时间 - - - - - 结束时间 - - - - - QChannelManager - - - 通道信息管理 - - - - - 所有通道数据 - - - - - 发送结果: - - - - - 通道名称: - - - - - 备注: - - - - - 是否设为默认(NG流向的通道) - - - - - 确认修改 - - - - - 退出 - - - - - 编号 - - - - - 通道名 - - - - - 备注 - - - - - 发送结果 - - - - - 是否为默认 - - - - - 默认 - - - - - QDia2ThSetting - - - 直径标定 - - - - - K:表示斜率,B:基准点,直径=高度*K+B - - - - - 确认修改 - - - - - 退出 - - - - - B: - - - - - K: - - - - - 提示 - - - - - 修改完成,参数已生效! - - - - - 确定 - - - - - QFormCheckDlg - - - 数据查询 - - - - - - 生产数据查询 - - - - - 生产数据统计 - - - - - 日志记录 - - - - - 设置 - - - - - - 显示数据数(条) - - - - - - 50 - - - - - - 上一页 - - - - - - - - TextLabel - - - - - - 下一页 - - - - - 标题 - - - - - 双击单条记录显示图片 - - - - - - 开始日期时间: - - - - - - - - - - 2017-11-11 11:11:11 - - - - - - 设置开始时间 - - - - - - - 结束日期时间: - - - - - - - 设置结束时间 - - - - - 筛选型号 - - - - - - 所有 - - - - - - 生产班次 - - - - - 全天 - - - - - 查询数量 - - - - - 0 - - - - - - - 查询 - - - - - - - 导出CSV - - - - - 数据类型查询 - - - - - 起始日期时间: - - - - - 设置起始时间 - - - - - 报警记录查询 - - - - - 实时检测数据记录保存上限设置: - - - - - 数据保存上限时间: - - - - - 10年 - - - - - 6年 - - - - - 5年 - - - - - 4年 - - - - - 3年 - - - - - 2年 - - - - - 1年 - - - - - 9个月 - - - - - 6个月 - - - - - 3个月 - - - - - 1个月 - - - - - 15天 - - - - - 1天 - - - - - 报警数据数量上限(条): - - - - - 确定并保存 - - - - - 我要修改 - - - - - 测试工具 - - - - - 手动删除旧数据 - - - - - 清空所有数据 - - - - - QIPConfigDlg - - - QIPConfigDlg - - - - - 本机服务器IP地址设置 - - - - - - IP 地址(I): - - - - - 关闭服务 - - - - - 开放端口: - - - - - 打开服务 - - - - - 目标客户端IP地址设置 - - - - - 源端口: - - - - - 确定 - - - - - QMainFilter - - - - Save received file - - - - - - All Files (*) - - - - - - Unable to open file - - - - - QMainFilter_WheelDetect - - - 提示 - - - - - 输入的信息不能为空!!! - - - - - QMainFilter_WheelDetect_Child - - - 加载必要模块..... - - - - - 初始化UI..... - - - - - 绑定信号槽信息... - - - - - 创建线程... - - - - - 系统初始化完成... - - - - - 程序退出,所有数据清零,服务器关闭,断开所有连接. - - - - - 已打开 - - - - - 已关闭 - - - - - 已连接 - - - - - 已断开 - - - - - 按下了模板管理按钮 - - - - - 按下了光栅标定按钮 - - - - - 按下了IP设置按钮 - - - - - 按下了发送模板库按钮 - - - - - 按下了设置生效按钮 - - - - - 停止虚拟检测 - - - - - 开始虚拟检测 - - - - - 显示识别结果 - - - - - 相机图像和背景图不一样,请更换检测背景! - - - - - 警告!!!连续出现%1个未识别型号 - - - - - ,未开启检测功能造成的 - - - - - 获得图像,正在计算中... - - - - - 模板库发送完成 - - - - - 检测状态 - - - - - - 正在检测型号数 - - - - - - 登 录 - - - - - :已注销 - - - - - :已登录 - - - - - - - 提示 - - - - - 你确定要注销 - - - - - - - 确认 - - - - - 取消 - - - - - - 该功能未启用. - - - - - - (默认) - - - - - - 默认通道 值1000 - - - - - 心跳包接收超时 - - - - - 准备重启TCP服务 - - - - - 心跳包超时 - - - - - 次 - - - - - PLC已收到相关设置参数! - - - - - 注 销 - - - - - QModNamedlg - - - 模板名修改 - - - - - 确认修改 - - - - - - 取消 - - - - - 缩略图: - - - - - TextLabel - - - - - 旧型号名: - - - - - 新型号名: - - - - - - 提示 - - - - - 新型号名不能为空! - - - - - 型号库中已包含该型号,请重新设置型号名! - - - - - 确认 - - - - - QMySplashScreen - - - 程序正在启动... - - - - - QObject - - - 本软件是基于机器学习的基础开发而来,用户可通过本软件采集汽轮的图像进行轮毂型号训练,训练后的模型用于型号识别。 - - - - - 汽车轮毂识别算法 更新时间:20190117 16:04:00 - - - - - 摩托车轮毂识别算法 更新时间:20190117 18:04:00 - - - - - QShowImg - - - 检测背景图像显示 - - - - - 退出 - - - - - 我要更换背景 - - - - - pic - - - - - 没有用于检测的背景图,请更换检测背景 - - - - - QWfModelManage - - - - 模板管理 - - - - - 模板型号查询 - - - - - - 查找: - - - - - 数量 - - - - - modelID - - - - - 轮毂信息: - - - - - 型号 - - - - - 0% - - - - - 阈值调节 - - - - - 严格 - - - - - 旋转次数 - - - - - 缩略图 - - - - - 宽松 - - - - - 厚度(mm) - - - - - 直径(mm) - - - - - 图片显示: - - - - - - 添加已裁剪的轮毂图片 - - - - - 追加 - - - - - - 删除所有模板 - - - - - 基本操作 - - - - - - 删除模板 - - - - - 添加新的模板 - - - - - 新建模板 - - - - - 训练当前模板 - - - - - 训练模板 - - - - - 训练所有模板,消耗时间会较长 - - - - - 训练全部 - - - - - 确认修改,每次修改模板的参数后都要确认修改才有效 - - - - - 修改确认 - - - - - 修改型号名 - - - - - 通道分配管理 - - - - - 所有型号及图像 - - - - - 型号: - - - - - 通道: - - - - - - 隐藏 - - - - - 修改 - - - - - 0 - - - - - 通道分配: - - - - - 删除通道 - - - - - 增加通道 - - - - - 刷新 - - - - - 通道管理 - - - - - QWorkItemDlg - - - 工单信息设置 - - - - - - 警告 - - - - - 名称不能为空. - - - - - 你输入的名称:%1 重复. - - - - - QWorkItemUI - - - 信息设置 - - - - - 确定 - - - - - 取消 - - - - - 备注信息: - - - - - 名称: - - - - - QWorkMgrUI - - - QWorkMgrUI - - - - - 工作任务表 - - - - - 添加任务单 - - - - - 添加 - - - - - 删除任务单 - - - - - 删除 - - - - - 修改任务单名称或备注信息 - - - - - 修改 - - - - - 使用任务单 - - - - - 应用 - - - - - 当前选择的任务表: - - - - - - 数量 - - - - - 添加型号到检测列表 - - - - - <<< - - - - - 从检测列表移除所选型号 - - - - - >>> - - - - - 缩略图 - - - - - 只看已选 - - - - - 只看未选 - - - - - 显示全部 - - - - - 查找: - - - - - 其他 - - - - - 按照直径检测 - - - - - 按照厚度检测 - - - - - 手动发送模板库 - - - - - 检测模板管理 - - - - - - 共 %1 个 - - - - - 当前使用的工单为 %1 - - - - - 以下型号为重复添加: -%1已被忽略. - - - - - 提醒 - - - - - - - 确定 - - - - - 工单 %1 被设为应用 - - - - - 发送模板库 - - - - - - 警告 - - - - - %1任务单正在使用不能被删除,请先切换到其他任务单,再删除该任务单? - - - - - - 取消 - - - - - 是否要删除 %1 模型? - - - - - 序号 - - - - - 内容 - - - - - Raster_Form - - - Form - - - - - 设备设置和测试 - - - - - 串口设备设置 - - - - - 串口名: - - - - - 查找设备 - - - - - <html><head/><body><p>串口设备设置,在需要使用光栅采集数据的情况下使用,并且需要设置正确的设备端口号才能正常与光栅设备通讯,否则通讯会失败。</p></body></html> - - - - - 波特率: - - - - - 串口打开状态 - - - - - 启动光栅采集数据功能 - - - - - - - 保存设置 - - - - - 打开串口 - - - - - 关闭串口 - - - - - 光栅数据采样 - - - - - 光栅未遮挡数: - - - - - 系统状态 - - - - - 光栅总数: - - - - - 63 - - - - - 被遮挡的起始位置: - - - - - 光栅遮挡数: - - - - - 轮毂数据标定 - - - - - 轮毂高度标定 - - - - - 中值滤波比例: - - - - - 光栅最小数值: - - - - - - - mm - - - - - 高度测量标定 - - - - - 基准高度: - - - - - 光栅倍率: - - - - - 采样容器大小: - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Consolas'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">高度测量,是基于光栅数据能正常采集的情况下进行的。</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">轮毂高度计算公式:</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">高度=光栅遮挡数*光栅倍率+基准高度</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">光栅遮挡数:是有物品挡住光栅时,光栅采样返回的数据</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">光栅倍率:是光栅自身的精度,每一格光栅所代表的高度是多少</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">基准高度:是在光栅无法照射的地方的高度大小,需要用直尺直接测量光栅底部与流水线的最低平面的距离</p></body></html> - - - - - 轮毂直径标定曲率: - - - - - B: - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Consolas'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">直径标定曲率:是用于校准算法计算出的轮毂直径与实际轮毂直径用的</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">曲率=轮毂高度*k+B 计算曲率的前提是轮毂的高度数据必须准确(误差小)</p></body></html> - - - - - K: - - - - - K:表示斜率,B:基准点,直径=高度*K+B - - - - - StationSettingDlg - - - 工位配置 - - - - - 确定并保存 - - - - - 相机设备配置 - - - - - 显示 - - - - - Key(*): - - - - - 工位1 - - - - - 相机类型(*): - - - - - Virtual Camera(100) - - - - - Baumer(160) - - - - - HIK(140) - - - - - 显示名称(*): - - - - - 唯一 - - - - - 相机参数 - - - - - 曝光: - - - - - 增益: - - - - - 格式: - - - - - GRAY8 - - - - - 保存参数 - - - - - 启用保存 - - - - - 保存图片后缀: - - - - - 是否保存: - - - - - .PNG - - - - - .BMP - - - - - .JPG - - - - - .JPEG - - - - - 保存图像的路径: - - - - - 修改 - - - - - 通讯设备配置: - - - - - 在使用的设备串口: - - - - - 设备名: - - - - - 波特率: - - - - - StatusBarUi - - - 系统时间 - - - - - 班次信息 - - - - - 检测状态 - - - - - 用户: - - - - - 系统时间: - - - - - 检测状态: - - - - - 检测中... - - - - - 未检测... - - - - - 班次信息: - - - - - 该时间段未设置班次 - - - - - 当前用户: - - - - - TimeMgr - - - Dialog - - - - - 未选中 - - - - - 添加时间 - - - - - 删除时间 - - - - - 修改时间 - - - - - TimeMgrUi - - - 班次 - - - - - 起始时间 - - - - - 结束时间 - - - - - 班次时间管理 - - - - - 设置参数 - - - - - - 未选中 - - - - - - - 提示 - - - - - - 未选择班次,请选择进行修改。 - - - - - - - 确认 - - - - - 您确定要删除 %1 班次? - - - - - 取消 - - - - - ToolBarUi - - - 请选择您的背景图 - - - - - 提示 - - - - - 背景图更新完成,请重启本软件. - - - - - 确认 - - - - - WheelCtrl - - - 加载通道模块 .... - - - - - 加载模板库 .... - - - - - 加载检测设置模块 .... - - - - - 加载数据库 .... - - - - - 加载班次管理模块 .... - - - - - 加载其他模块 .... - - - - - 创建子线程 .... - - - - - 加载光栅通讯模块 .... - - - - - 模块加载完成,启动线程 .... - - - - - 未登录 - - - - diff --git a/tpvs17/wheel.sln b/tpvs17/wheel.sln index b1438af..1ddec6e 100644 --- a/tpvs17/wheel.sln +++ b/tpvs17/wheel.sln @@ -5,12 +5,6 @@ VisualStudioVersion = 15.0.28307.1267 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lpMain", "tpMain\tpMain.vcxproj", "{A229CF5C-81EF-4909-AB6E-49C746F1ED4C}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tpAlgorithmQt", "tpAlgorithmQt\tpAlgorithmQt.vcxproj", "{B12702AD-ABFB-343A-A199-8E24837244A3}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "QUserInfo", "QUserInfo\QUserInfo.vcxproj", "{D7AF8AA1-0F2C-407F-B135-FBDA4448EE16}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RasterSDG20", "RasterSDG20\RasterSDG20.vcxproj", "{CE765894-2106-48FE-99C3-D8D7624889A0}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -21,24 +15,12 @@ Global {A229CF5C-81EF-4909-AB6E-49C746F1ED4C}.Debug|x64.Build.0 = Debug|x64 {A229CF5C-81EF-4909-AB6E-49C746F1ED4C}.Release|x64.ActiveCfg = Release|x64 {A229CF5C-81EF-4909-AB6E-49C746F1ED4C}.Release|x64.Build.0 = Release|x64 - {B12702AD-ABFB-343A-A199-8E24837244A3}.Debug|x64.ActiveCfg = Debug|x64 - {B12702AD-ABFB-343A-A199-8E24837244A3}.Debug|x64.Build.0 = Debug|x64 - {B12702AD-ABFB-343A-A199-8E24837244A3}.Release|x64.ActiveCfg = Release|x64 - {B12702AD-ABFB-343A-A199-8E24837244A3}.Release|x64.Build.0 = Release|x64 - {D7AF8AA1-0F2C-407F-B135-FBDA4448EE16}.Debug|x64.ActiveCfg = Debug|x64 - {D7AF8AA1-0F2C-407F-B135-FBDA4448EE16}.Debug|x64.Build.0 = Debug|x64 - {D7AF8AA1-0F2C-407F-B135-FBDA4448EE16}.Release|x64.ActiveCfg = Release|x64 - {D7AF8AA1-0F2C-407F-B135-FBDA4448EE16}.Release|x64.Build.0 = Release|x64 - {CE765894-2106-48FE-99C3-D8D7624889A0}.Debug|x64.ActiveCfg = Debug|x64 - {CE765894-2106-48FE-99C3-D8D7624889A0}.Debug|x64.Build.0 = Debug|x64 - {CE765894-2106-48FE-99C3-D8D7624889A0}.Release|x64.ActiveCfg = Release|x64 - {CE765894-2106-48FE-99C3-D8D7624889A0}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution - Qt5Version = qt5.9.4-msvc2017-x64 SolutionGuid = {CD365F32-5EAC-4A16-AD47-BFB1D8E5511A} + Qt5Version = qt5.9.4-msvc2017-x64 EndGlobalSection EndGlobal