MainAndSecondaryCamerasWnd.cpp 38 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048
  1. #include "MainAndSecondaryCamerasWnd.h"
  2. #include "ui_MainAndSecondaryCamerasWnd.h"
  3. #include <QSettings>
  4. #include <QCloseEvent>
  5. #include <QVBoxLayout>
  6. #include <QTimer>
  7. #include <QScrollBar>
  8. #include <QDoubleValidator>
  9. #include "CameraDistribute.h"
  10. #include "Src/common/JMessageTip.h"
  11. MainAndSecondaryCamerasWnd::MainAndSecondaryCamerasWnd(QWidget *parent)
  12. : JOriginalMainWnd(parent)
  13. , ui(new Ui::MainAndSecondaryCamerasWnd)
  14. {
  15. ui->setupUi(this);
  16. QSettings settings("YourOrganization", "YourApplication");
  17. settings.beginGroup("LastSettings");
  18. m_lastRightPixmap = settings.value("LastRightPixmap").value<QPixmap>();
  19. lasttextList = settings.value("LasttextList").toStringList();
  20. lastLastRightPixmap = settings.value("LastLastRightPixmap").value<QPixmap>();
  21. lastLasttextList = settings.value("LastLasttextList").toStringList();
  22. lastLastIndex = settings.value("LastLastIndex", 0).toInt();
  23. lastLastGroupId = settings.value("LastLastGroupId", 0).toInt();
  24. settings.endGroup();
  25. ui->control_r->HideOrShowPage(false);
  26. ui->control_L->HideOrShowPage(false);
  27. //initFrom();
  28. qApp->installEventFilter(this);
  29. }
  30. MainAndSecondaryCamerasWnd::~MainAndSecondaryCamerasWnd()
  31. {
  32. m_pMainCameraBind = nullptr;
  33. delete ui;
  34. }
  35. void MainAndSecondaryCamerasWnd::initFrom()
  36. {
  37. {
  38. // 界面刷新
  39. InitPage();
  40. //STR_TEMPLATE strFun = {};
  41. //strFun.pView = ui->scrollArea;
  42. //strFun.veSignalFun.emplace_back(std::bind(&MainAndSecondaryCamerasWnd::UpdateCameraDisplay0, this, std::placeholders::_1, std::placeholders::_2));
  43. //strFun.veSignalFun.emplace_back(std::bind(&MainAndSecondaryCamerasWnd::UpdateCameraDisplay1, this, std::placeholders::_1, std::placeholders::_2));
  44. ////strFun.veSlotFun.emplace_back([this]() { CheckIs(); });
  45. //strFun.veSlotFun.emplace_back(std::bind(&MainAndSecondaryCamerasWnd::CheckIs, this));
  46. //InitAllCamerPage(strFun, this);
  47. //CameraImageHandlera<MainAndSecondaryCamerasWnd, STR_TEMPLATE> A(this, strFun);
  48. //SwitchToConfigAAAAA<MainAndSecondaryCamerasWnd, STR_TEMPLATE>();
  49. }
  50. //ui->LeftOperatewidget->setMouseTracking(true);
  51. //ui->RightOperatewidget->setMouseTracking(true);
  52. QSettings settings2("YourOrganization", "YourApplication_lastWndType");
  53. int lastWndType = settings2.value("LastWndType").toInt();
  54. int LastGroup = settings2.value("LastGroup").toInt();
  55. lastIndex = lastWndType;
  56. lastGroupId = LastGroup;
  57. QTimer* timer = new QTimer(this);
  58. connect(timer, &QTimer::timeout, this, &MainAndSecondaryCamerasWnd::checkSettings);
  59. timer->start(100);
  60. InitModulesShow();
  61. }
  62. void MainAndSecondaryCamerasWnd::InitPage()
  63. {
  64. QWidget* viewport = ui->scrollArea->viewport();
  65. QWidget* container = new QWidget(viewport);
  66. QHBoxLayout* mainLayout = new QHBoxLayout(container);
  67. mainLayout->setSpacing(28);
  68. mainLayout->setMargin(0);
  69. int nSize = 0;
  70. if (m_pMainCameraBind != nullptr)
  71. {
  72. nSize = m_pMainCameraBind->m_vecCamera.size();
  73. if (nSize == 0) // 针对获取不到的情况
  74. {
  75. nSize = 5;
  76. //JMessageTip::Message_warning("a");
  77. }
  78. QList<int> numbers;
  79. for (int i = 1; i <= nSize; i++)
  80. {
  81. numbers.push_back(i);
  82. }
  83. for (int i = 0; i < numbers.size(); ++i)
  84. {
  85. int num = numbers[i];
  86. CameraImageHandler* manager = new CameraImageHandler(num);
  87. Group* widget = manager->getGroup();
  88. CameraConnectUpdateImageFun(i, widget);
  89. if (widget != nullptr)
  90. {
  91. mainLayout->addWidget(widget);
  92. m_currentSelectGroup.liGroup.append(widget);
  93. }
  94. if (manager->getWafer())
  95. {
  96. waferMap.insert(num, manager->getWafer());
  97. }
  98. if (manager->getWafer()) {
  99. waffleMap.insert(num, manager->getWaffle());
  100. }
  101. if (manager->getMaterialBox()) {
  102. materialBoxMap.insert(num, manager->getMaterialBox());
  103. }
  104. delete manager;
  105. }
  106. // 设置控件的最小高度和最大宽度
  107. int minHeight = 162;
  108. int maxWidth = 244;
  109. int num = -28;
  110. for (Group* w : m_currentSelectGroup.liGroup)
  111. {
  112. w->setMinimumHeight(minHeight);
  113. w->setMaximumWidth(maxWidth);
  114. num = num + 272;
  115. }
  116. container->setMinimumSize(num, 162);
  117. container->setLayout(mainLayout);
  118. ui->scrollArea->setWidget(container);
  119. ui->scrollArea->resize(1062, 177);
  120. // 只有一个相机的情况,直接绑定
  121. if (numbers.size() == 1)
  122. {
  123. Group* pGroup = m_currentSelectGroup.liGroup[0];
  124. connect(pGroup, &Group::SetUpDataImageShowSig,
  125. this, &MainAndSecondaryCamerasWnd::GetUpDataImageShowSignals0);
  126. ST_CURRENT_SELECT_GROUP _curr;
  127. _curr.isBond = true;
  128. _curr.pSelectGroup = pGroup;
  129. _curr.nCurrentCameraId = pGroup->m_nGroupId;
  130. _curr.nSelectLeft1 = 1;
  131. m_veCurrentSelectGroup.push_back(_curr);
  132. UpdataLightJoystickSwitchPage(pGroup);
  133. }
  134. }
  135. }
  136. void MainAndSecondaryCamerasWnd::CameraConnectUpdateImageFun(int nIndex, Group* widget)
  137. {
  138. auto BinCamerasImage = [&](void (MainAndSecondaryCamerasWnd::* pCamerasImage)(const QPixmap& imageData))
  139. {
  140. //共用函数
  141. //connect(widget, &Group::send_button_Signal, this, &MainAndSecondaryCamerasWnd::CheckIs);
  142. connect(widget, &Group::SetCurrentSelectSig, this, &MainAndSecondaryCamerasWnd::GetCurrentSelectSlots);
  143. // 相机图片
  144. connect(this, pCamerasImage, widget, &Group::UpDataImageShowSlots);
  145. };
  146. if (nIndex == 0)
  147. {
  148. BinCamerasImage(&MainAndSecondaryCamerasWnd::UpDataImageShowSignals0);
  149. }
  150. else if (nIndex == 1)
  151. {
  152. BinCamerasImage(&MainAndSecondaryCamerasWnd::UpDataImageShowSignals1);
  153. }
  154. else if (nIndex == 2)
  155. {
  156. BinCamerasImage(&MainAndSecondaryCamerasWnd::UpDataImageShowSignals2);
  157. }
  158. else if (nIndex == 3)
  159. {
  160. BinCamerasImage(&MainAndSecondaryCamerasWnd::UpDataImageShowSignals3);
  161. }
  162. else if (nIndex == 4)
  163. {
  164. BinCamerasImage(&MainAndSecondaryCamerasWnd::UpDataImageShowSignals4);
  165. }
  166. }
  167. void MainAndSecondaryCamerasWnd::InitModulesShow()
  168. {
  169. //if (m_pMainCameraBind != nullptr)
  170. //{
  171. // DeduplicationBox(ui->axisComboBox, m_pMainCameraBind->m_vecCAxis, 0);
  172. // DeduplicationBox(ui->axisTypeComboBox, m_pMainCameraBind->m_vecCAxis, 1);
  173. //}
  174. }
  175. template<class T>
  176. void MainAndSecondaryCamerasWnd::DeduplicationBox(QComboBox* pCom, const T& veTemp, int nIndex)
  177. {
  178. QStringList items;
  179. for (int i = 0; i < pCom->count(); ++i)
  180. {
  181. items << pCom->itemText(i);
  182. }
  183. for (auto& a : veTemp)
  184. {
  185. QString strName;
  186. if (nIndex == 0)
  187. {
  188. strName = a->GetModuleType().c_str();
  189. }
  190. else if (nIndex == 1)
  191. {
  192. strName = a->GetStringAxisType().c_str();
  193. }
  194. bool bMa = false; // 是否匹配
  195. for (auto b : items)
  196. {
  197. if (b == strName)
  198. {
  199. bMa = true;
  200. break;
  201. }
  202. }
  203. if (!bMa)
  204. {
  205. pCom->addItem(strName);
  206. }
  207. }
  208. }
  209. void MainAndSecondaryCamerasWnd::checkSettings() {
  210. QSettings settings("YourCompany", "YourApplication_");
  211. int groupId = settings.value("GroupId", 0).toInt();
  212. int index = settings.value("Index", 0).toInt();
  213. if (groupId != lastGroupId || index != lastIndex) {
  214. loadSettings();
  215. lastGroupId = groupId;
  216. lastIndex = index;
  217. }
  218. }
  219. void MainAndSecondaryCamerasWnd::loadSettings()
  220. {
  221. QSettings settings("YourCompany", "YourApplication_");
  222. int groupId = settings.value("GroupId", 0).toInt();
  223. int index = settings.value("Index", 0).toInt();
  224. //TODO: 这个地方目前暂停使用
  225. //loadGroupSettings(groupId, index);
  226. }
  227. #if 0
  228. void MainAndSecondaryCamerasWnd::loadGroupSettings(int Id, int Index) {
  229. // isUpdatingSettings = true;
  230. QSettings settings("YourOrganization", "YourApplication");
  231. settings.beginGroup(QString::number(Id));
  232. QString imagePath1 = settings.value("ImagePath1").toString();
  233. int materialWndType = settings.value("MaterialWndType").toInt();
  234. QStringList textList = settings.value("TextList").toStringList();
  235. settings.endGroup();
  236. QSettings Last_settings("YourOrganization", "YourApplication");
  237. settings.beginGroup(QString::number(lastGroupId));
  238. QString Last_imagePath1 = settings.value("ImagePath1").toString();
  239. int Last_materialWndType = settings.value("MaterialWndType").toInt();
  240. QStringList Last_textList = settings.value("TextList").toStringList();
  241. settings.endGroup();
  242. QString lastRightImage = settings.value("LastRightImage").toString();
  243. QSize size_left = ui->LeftOperatewidget->size();
  244. QSize size_right = ui->RightOperatewidget->size();
  245. QPixmap newPixmap;
  246. QPixmap Last_newPixmap;
  247. if (Index == 1) {
  248. //newPixmap = QPixmap(imagePath1);
  249. clearLayout(1);
  250. newPixmap = QPixmap(imagePath1);
  251. QPixmap scaledPixmap = newPixmap.scaled(size_right, Qt::KeepAspectRatio, Qt::SmoothTransformation);
  252. Right_currentMode = ModeImage;
  253. Right_currentPixmap = scaledPixmap;
  254. Right_scaleFactor = 1.0;
  255. Right_previousScaleFactor = 1.0;
  256. ui->RightOperatewidget->setPixmap(scaledPixmap);
  257. double percentage = Right_scaleFactor * 100;
  258. QString percentageStr = QString::number((int)percentage);
  259. ui->Rightlabel_Percentage->setText(QString("%1%").arg(percentageStr));
  260. if (lastIndex == 1) {
  261. clearLayout(0);
  262. Last_newPixmap = QPixmap(Last_imagePath1);
  263. QPixmap scaledPixmap = Last_newPixmap.scaled(size_left, Qt::KeepAspectRatio, Qt::SmoothTransformation);
  264. Left_currentMode = ModeImage;
  265. Left_currentPixmap = scaledPixmap;
  266. Left_scaleFactor = 1.0;
  267. Left_previousScaleFactor = 1.0;
  268. ui->LeftOperatewidget->setPixmap(scaledPixmap);
  269. double percentage = Left_scaleFactor * 100;
  270. QString percentageStr = QString::number((int)percentage);
  271. ui->Leftlabel_Percentage->setText(QString("%1%").arg(percentageStr));
  272. }
  273. else if (lastIndex == 2) {
  274. clearLayout(0);
  275. if (Last_materialWndType == 1) {
  276. ui->LeftOperatewidget->clearPixmap();
  277. QVBoxLayout* layout = new QVBoxLayout(ui->LeftOperatewidget);
  278. waferMap.value(lastGroupId)->initFrom(ui->LeftOperatewidget);
  279. layout->setContentsMargins(0, 0, 0, 0);
  280. layout->addWidget(waferMap.value(lastGroupId)->view);
  281. ui->LeftOperatewidget->setLayout(layout);
  282. Left_currentMode = ModeView;
  283. Left_currentView = waferMap.value(lastGroupId)->view;
  284. Left_scaleFactor = 1.0;
  285. applyScale(0);
  286. }
  287. else if (Last_materialWndType == 2) {
  288. ui->LeftOperatewidget->clearPixmap();
  289. QVBoxLayout* layout = new QVBoxLayout(ui->LeftOperatewidget);
  290. waffleMap.value(lastGroupId)->initFrom(ui->LeftOperatewidget);
  291. layout->setContentsMargins(0, 0, 0, 0);
  292. layout->addWidget(waffleMap.value(lastGroupId)->view);
  293. ui->LeftOperatewidget->setLayout(layout);
  294. Left_currentMode = ModeView;
  295. Left_currentView = waffleMap.value(lastGroupId)->view;
  296. Left_scaleFactor = 1.0;
  297. applyScale(0);
  298. }
  299. else if (Last_materialWndType == 3) {
  300. ui->LeftOperatewidget->clearPixmap();
  301. QVBoxLayout* layout = new QVBoxLayout(ui->LeftOperatewidget);
  302. materialBoxMap.value(lastGroupId)->initFrom(ui->LeftOperatewidget);
  303. layout->setContentsMargins(0, 0, 0, 0);
  304. layout->addWidget(materialBoxMap.value(lastGroupId)->view);
  305. ui->LeftOperatewidget->setLayout(layout);
  306. Left_currentMode = ModeView;
  307. Left_currentView = materialBoxMap.value(lastGroupId)->view;
  308. Left_scaleFactor = 1.0;
  309. applyScale(0);
  310. }
  311. }
  312. } else if (Index == 2) {
  313. clearLayout(1);
  314. clearLayout(0);
  315. if (lastIndex == 1) {
  316. }
  317. if (materialWndType == 1) {
  318. if (lastIndex == 1) {
  319. Last_newPixmap = QPixmap(Last_imagePath1);
  320. QPixmap scaledPixmap = Last_newPixmap.scaled(size_left, Qt::KeepAspectRatio, Qt::SmoothTransformation);
  321. Left_currentMode = ModeImage;
  322. Left_currentPixmap = scaledPixmap;
  323. Left_scaleFactor = 1.0;
  324. Left_previousScaleFactor = 1.0;
  325. ui->LeftOperatewidget->setPixmap(scaledPixmap);
  326. double percentage = Left_scaleFactor * 100;
  327. QString percentageStr = QString::number((int)percentage);
  328. ui->Leftlabel_Percentage->setText(QString("%1%").arg(percentageStr));
  329. } else if (lastIndex == 2) {
  330. if (Last_materialWndType == 1) {
  331. ui->LeftOperatewidget->clearPixmap();
  332. QVBoxLayout *layout = new QVBoxLayout(ui->LeftOperatewidget);
  333. waferMap.value(lastGroupId)->initFrom(ui->LeftOperatewidget);
  334. layout->setContentsMargins(0, 0, 0, 0);
  335. layout->addWidget(waferMap.value(lastGroupId)->view);
  336. ui->LeftOperatewidget->setLayout(layout);
  337. Left_currentMode = ModeView;
  338. Left_currentView = waferMap.value(lastGroupId)->view;
  339. Left_scaleFactor = 1.0;
  340. applyScale(0);
  341. } else if (Last_materialWndType == 2) {
  342. ui->LeftOperatewidget->clearPixmap();
  343. QVBoxLayout* layout = new QVBoxLayout(ui->LeftOperatewidget);
  344. waffleMap.value(lastGroupId)->initFrom(ui->LeftOperatewidget);
  345. layout->setContentsMargins(0, 0, 0, 0);
  346. layout->addWidget(waffleMap.value(lastGroupId)->view);
  347. ui->LeftOperatewidget->setLayout(layout);
  348. Left_currentMode = ModeView;
  349. Left_currentView = waffleMap.value(lastGroupId)->view;
  350. Left_scaleFactor = 1.0;
  351. applyScale(0);
  352. } else if (Last_materialWndType == 3) {
  353. ui->LeftOperatewidget->clearPixmap();
  354. QVBoxLayout* layout = new QVBoxLayout(ui->LeftOperatewidget);
  355. materialBoxMap.value(lastGroupId)->initFrom(ui->LeftOperatewidget);
  356. layout->setContentsMargins(0, 0, 0, 0);
  357. layout->addWidget(materialBoxMap.value(lastGroupId)->view);
  358. ui->LeftOperatewidget->setLayout(layout);
  359. Left_currentMode = ModeView;
  360. Left_currentView = materialBoxMap.value(lastGroupId)->view;
  361. Left_scaleFactor = 1.0;
  362. applyScale(0);
  363. }
  364. }
  365. ui->RightOperatewidget->clearPixmap();
  366. QVBoxLayout *layout = new QVBoxLayout(ui->RightOperatewidget);
  367. waferMap.value(Id)->initFrom(ui->RightOperatewidget);
  368. layout->setContentsMargins(0, 0, 0, 0);
  369. layout->addWidget(waferMap.value(Id)->view);
  370. ui->RightOperatewidget->setLayout(layout);
  371. Right_currentMode = ModeView;
  372. Right_currentView = waferMap.value(Id)->view;
  373. Right_scaleFactor = 1.0;
  374. applyScale(1);
  375. } else if (materialWndType == 2) {
  376. if (lastIndex == 1) {
  377. Last_newPixmap = QPixmap(Last_imagePath1);
  378. QPixmap scaledPixmap = Last_newPixmap.scaled(size_left, Qt::KeepAspectRatio, Qt::SmoothTransformation);
  379. Left_currentMode = ModeImage;
  380. Left_currentPixmap = scaledPixmap;
  381. Left_scaleFactor = 1.0;
  382. Left_previousScaleFactor = 1.0;
  383. ui->LeftOperatewidget->setPixmap(scaledPixmap);
  384. double percentage = Left_scaleFactor * 100;
  385. QString percentageStr = QString::number((int)percentage);
  386. ui->Leftlabel_Percentage->setText(QString("%1%").arg(percentageStr));
  387. } else if (lastIndex == 2) {
  388. if (Last_materialWndType == 1) {
  389. ui->LeftOperatewidget->clearPixmap();
  390. QVBoxLayout *layout = new QVBoxLayout(ui->LeftOperatewidget);
  391. waferMap.value(lastGroupId)->initFrom(ui->LeftOperatewidget);
  392. layout->setContentsMargins(0, 0, 0, 0);
  393. layout->addWidget(waferMap.value(lastGroupId)->view);
  394. ui->LeftOperatewidget->setLayout(layout);
  395. Left_currentMode = ModeView;
  396. Left_currentView = waferMap.value(lastGroupId)->view;
  397. Left_scaleFactor = 1.0;
  398. applyScale(0);
  399. } else if (Last_materialWndType == 2) {
  400. ui->LeftOperatewidget->clearPixmap();
  401. ui->LeftOperatewidget->clearPixmap();
  402. QVBoxLayout* layout = new QVBoxLayout(ui->LeftOperatewidget);
  403. waffleMap.value(lastGroupId)->initFrom(ui->LeftOperatewidget);
  404. layout->setContentsMargins(0, 0, 0, 0);
  405. layout->addWidget(waffleMap.value(lastGroupId)->view);
  406. ui->LeftOperatewidget->setLayout(layout);
  407. Left_currentMode = ModeView;
  408. Left_currentView = waffleMap.value(lastGroupId)->view;
  409. Left_scaleFactor = 1.0;
  410. applyScale(0);
  411. } else if (Last_materialWndType == 3) {
  412. ui->LeftOperatewidget->clearPixmap();
  413. QVBoxLayout* layout = new QVBoxLayout(ui->LeftOperatewidget);
  414. materialBoxMap.value(lastGroupId)->initFrom(ui->LeftOperatewidget);
  415. layout->setContentsMargins(0, 0, 0, 0);
  416. layout->addWidget(materialBoxMap.value(lastGroupId)->view);
  417. ui->LeftOperatewidget->setLayout(layout);
  418. Left_currentMode = ModeView;
  419. Left_currentView = materialBoxMap.value(lastGroupId)->view;
  420. Left_scaleFactor = 1.0;
  421. applyScale(0);
  422. }
  423. }
  424. ui->RightOperatewidget->clearPixmap();
  425. QVBoxLayout* layout = new QVBoxLayout(ui->RightOperatewidget);
  426. waffleMap.value(Id)->initFrom(ui->RightOperatewidget);
  427. layout->setContentsMargins(0, 0, 0, 0);
  428. layout->addWidget(waffleMap.value(Id)->view);
  429. ui->RightOperatewidget->setLayout(layout);
  430. Right_currentMode = ModeView;
  431. Right_currentView = waffleMap.value(Id)->view;
  432. Right_scaleFactor = 1.0;
  433. } else if (materialWndType == 3) {
  434. if (lastIndex == 1) {
  435. Last_newPixmap = QPixmap(Last_imagePath1);
  436. QPixmap scaledPixmap = Last_newPixmap.scaled(size_left, Qt::KeepAspectRatio, Qt::SmoothTransformation);
  437. Left_currentMode = ModeImage;
  438. Left_currentPixmap = scaledPixmap;
  439. Left_scaleFactor = 1.0;
  440. Left_previousScaleFactor = 1.0;
  441. ui->LeftOperatewidget->setPixmap(scaledPixmap);
  442. double percentage = Left_scaleFactor * 100;
  443. QString percentageStr = QString::number((int)percentage);
  444. ui->Leftlabel_Percentage->setText(QString("%1%").arg(percentageStr));
  445. } else if (lastIndex == 2) {
  446. if (Last_materialWndType == 1) {
  447. ui->LeftOperatewidget->clearPixmap();
  448. QVBoxLayout *layout = new QVBoxLayout(ui->LeftOperatewidget);
  449. waferMap.value(lastGroupId)->initFrom(ui->LeftOperatewidget);
  450. layout->setContentsMargins(0, 0, 0, 0);
  451. layout->addWidget(waferMap.value(lastGroupId)->view);
  452. ui->LeftOperatewidget->setLayout(layout);
  453. Left_currentMode = ModeView;
  454. Left_currentView = waferMap.value(lastGroupId)->view;
  455. Left_scaleFactor = 1.0;
  456. applyScale(0);
  457. } else if (Last_materialWndType == 2) {
  458. ui->LeftOperatewidget->clearPixmap();
  459. QVBoxLayout* layout = new QVBoxLayout(ui->LeftOperatewidget);
  460. waffleMap.value(lastGroupId)->initFrom(ui->LeftOperatewidget);
  461. layout->setContentsMargins(0, 0, 0, 0);
  462. layout->addWidget(waffleMap.value(lastGroupId)->view);
  463. ui->LeftOperatewidget->setLayout(layout);
  464. Left_currentMode = ModeView;
  465. Left_currentView = waffleMap.value(lastGroupId)->view;
  466. Left_scaleFactor = 1.0;
  467. applyScale(0);
  468. } else if (Last_materialWndType == 3) {
  469. ui->LeftOperatewidget->clearPixmap();
  470. QVBoxLayout* layout = new QVBoxLayout(ui->LeftOperatewidget);
  471. materialBoxMap.value(lastGroupId)->initFrom(ui->LeftOperatewidget);
  472. layout->setContentsMargins(0, 0, 0, 0);
  473. layout->addWidget(materialBoxMap.value(lastGroupId)->view);
  474. ui->LeftOperatewidget->setLayout(layout);
  475. Left_currentMode = ModeView;
  476. Left_currentView = materialBoxMap.value(lastGroupId)->view;
  477. Left_scaleFactor = 1.0;
  478. applyScale(0);
  479. }
  480. }
  481. ui->RightOperatewidget->clearPixmap();
  482. QVBoxLayout* layout = new QVBoxLayout(ui->RightOperatewidget);
  483. materialBoxMap.value(Id)->initFrom(ui->RightOperatewidget);
  484. layout->setContentsMargins(0, 0, 0, 0);
  485. layout->addWidget(materialBoxMap.value(Id)->view);
  486. ui->RightOperatewidget->setLayout(layout);
  487. Left_currentMode = ModeView;
  488. Left_currentView = materialBoxMap.value(Id)->view;
  489. Left_scaleFactor = 1.0;
  490. applyScale(0);
  491. }
  492. }
  493. QSettings settings2("YourOrganization", "YourApplication_lastWndType");
  494. settings2.setValue("LastWndType", lastIndex);
  495. settings2.setValue("LastGroup", lastGroupId);
  496. QPixmap scaledPixmap_right = newPixmap.scaled(size_right, Qt::KeepAspectRatio, Qt::SmoothTransformation);
  497. ui->RightOperatewidget->setPixmap(scaledPixmap_right);
  498. QPixmap scaledPixmap_left = m_lastRightPixmap.scaled(size_left, Qt::KeepAspectRatio, Qt::SmoothTransformation);
  499. ui->LeftOperatewidget->setPixmap(scaledPixmap_left);
  500. // 更新当前图片的成员变量
  501. // Left_currentPixmap = scaledPixmap_left;
  502. // Left_scaleFactor = 1.0;
  503. // Right_currentPixmap = scaledPixmap_right;
  504. // Right_scaleFactor = 1.0;
  505. // ui->Leftlabel_Percentage->setText("100%");
  506. // ui->Rightlabel_Percentage->setText("100%");
  507. // ui->LeftDataSources->clear();
  508. // ui->LeftDataSources->addItems(lasttextList);
  509. // ui->RightDataSources->clear();
  510. // ui->RightDataSources->addItems(textList);
  511. // 保存到 QSettings
  512. // settings.beginGroup("LastSettings");
  513. // settings.setValue("LastRightPixmap", lastRightPixmap);
  514. // settings.setValue("LasttextList", lasttextList);
  515. // settings.setValue("LastLastRightPixmap", lastLastRightPixmap);
  516. // settings.setValue("LastLasttextList", lastLasttextList);
  517. // settings.setValue("LastLastIndex", lastLastIndex);
  518. // settings.setValue("LastLastGroupId", lastLastGroupId);
  519. // settings.endGroup();
  520. if (isUpdatingSettings) {
  521. lastLastRightPixmap = m_lastRightPixmap;
  522. lastLasttextList = lasttextList;
  523. m_lastRightPixmap = scaledPixmap_right;
  524. lasttextList = textList;
  525. lastLastIndex = lastIndex;
  526. lastLastGroupId = lastGroupId;
  527. }
  528. }
  529. #endif
  530. void MainAndSecondaryCamerasWnd::UpdataGroupSettings(const QPixmap& imageData)
  531. {
  532. int Id = m_currentSelectGroup.nGroupId;
  533. int Index = m_currentSelectGroup.nSelectLeft1;
  534. // isUpdatingSettings = true;
  535. QSettings settings("YourOrganization", "YourApplication");
  536. settings.beginGroup(QString::number(Id));
  537. QString imagePath1 = settings.value("ImagePath1").toString();
  538. int materialWndType = settings.value("MaterialWndType").toInt();
  539. QStringList textList = settings.value("TextList").toStringList();
  540. settings.endGroup();
  541. QSettings Last_settings("YourOrganization", "YourApplication");
  542. settings.beginGroup(QString::number(lastGroupId));
  543. QString Last_imagePath1 = settings.value("ImagePath1").toString();
  544. int Last_materialWndType = settings.value("MaterialWndType").toInt();
  545. QStringList Last_textList = settings.value("TextList").toStringList();
  546. settings.endGroup();
  547. QString lastRightImage = settings.value("LastRightImage").toString();
  548. QPixmap newPixmap;
  549. QPixmap Last_newPixmap;
  550. if (Index == 1) {
  551. newPixmap = QPixmap(imageData);
  552. QStringList test = { "1","2" };
  553. ui->viewwidgetgroup_R->updateOperateWidget(newPixmap, test);
  554. }
  555. if (lastIndex == 1) {
  556. Last_newPixmap = QPixmap(imageData);
  557. QStringList test = { "1","2" };
  558. ui->viewwidgetgroup_L->updateOperateWidget(Last_newPixmap, test);
  559. }
  560. else if (lastIndex == 2) {
  561. updateMaterialWidget(last_left,Last_materialWndType, lastGroupId);
  562. }
  563. if (Index == 2) {
  564. updateMaterialWidget(current_right,materialWndType, Id);
  565. }
  566. QSettings settings2("YourOrganization", "YourApplication_lastWndType");
  567. settings2.setValue("LastWndType", lastIndex);
  568. settings2.setValue("LastGroup", lastGroupId);
  569. QPixmap scaledPixmap_right = newPixmap.scaled(ui->viewwidgetgroup_R->getOperatewidget()->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
  570. if (isUpdatingSettings) {
  571. lastLastRightPixmap = m_lastRightPixmap;
  572. lastLasttextList = lasttextList;
  573. m_lastRightPixmap = scaledPixmap_right;
  574. lasttextList = textList;
  575. lastLastIndex = lastIndex;
  576. lastLastGroupId = lastGroupId;
  577. }
  578. }
  579. void MainAndSecondaryCamerasWnd::updateMaterialWidget(int side,int materialWndType, int groupId) {
  580. if (side == last_left) {
  581. switch (materialWndType) {
  582. case 1: ui->viewwidgetgroup_L->setWafer(waferMap.value(lastGroupId)); break;
  583. case 2: ui->viewwidgetgroup_L->setWaffle(waffleMap.value(lastGroupId)); break;
  584. case 3: ui->viewwidgetgroup_L->setMaterialBox(materialBoxMap.value(lastGroupId)); break;
  585. }
  586. }
  587. else if (side == current_right) {
  588. switch (materialWndType) {
  589. case 1: ui->viewwidgetgroup_R->setWafer(waferMap.value(lastGroupId)); break;
  590. case 2: ui->viewwidgetgroup_R->setWaffle(waffleMap.value(lastGroupId)); break;
  591. case 3: ui->viewwidgetgroup_R->setMaterialBox(materialBoxMap.value(lastGroupId)); break;
  592. }
  593. }
  594. }
  595. void MainAndSecondaryCamerasWnd::InitMainCameraBind(CameraBind* pCameraBind)
  596. {
  597. m_pMainCameraBind = pCameraBind;
  598. initFrom();
  599. m_nTimeShowPos = startTimer(600);
  600. ResetIdleTimer(true);
  601. }
  602. void MainAndSecondaryCamerasWnd::UpdateCameraDisplay0(int iCameraId, JVision::ImageInfo imageData)
  603. {
  604. // TODO: 这里需要改动
  605. QImage image(imageData.data, imageData.width, imageData.height, QImage::Format_Indexed8);
  606. ui->viewwidgetgroup_L->getOperatewidget()->setGeometry(ui->viewwidgetgroup_L->getOperatewidget()->pos().x(),
  607. ui->viewwidgetgroup_L->getOperatewidget()->pos().y(),
  608. ui->viewwidgetgroup_L->getOperatewidget()->width(),
  609. ui->viewwidgetgroup_L->getOperatewidget()->height());
  610. //ui->LeftOperatewidget->setPixmap(QPixmap::fromImage(image));
  611. emit UpDataImageShowSignals0(QPixmap::fromImage(image));
  612. }
  613. void MainAndSecondaryCamerasWnd::UpdateCameraDisplay1(int iCameraId, JVision::ImageInfo imageData)
  614. {
  615. QImage image(imageData.data, imageData.width, imageData.height, QImage::Format_Indexed8);
  616. ui->viewwidgetgroup_R->getOperatewidget()->setGeometry(ui->viewwidgetgroup_R->getOperatewidget()->pos().x(),
  617. ui->viewwidgetgroup_R->getOperatewidget()->pos().y(),
  618. ui->viewwidgetgroup_R->getOperatewidget()->width(),
  619. ui->viewwidgetgroup_R->getOperatewidget()->height());
  620. //ui->RightOperatewidget->setPixmap(QPixmap::fromImage(image));
  621. emit UpDataImageShowSignals1(QPixmap::fromImage(image));
  622. }
  623. void MainAndSecondaryCamerasWnd::UpdateCameraDisplay2(int iCameraId, JVision::ImageInfo imageData)
  624. {
  625. }
  626. void MainAndSecondaryCamerasWnd::UpdateCameraDisplay3(int iCameraId, JVision::ImageInfo imageData)
  627. {
  628. }
  629. void MainAndSecondaryCamerasWnd::UpdateCameraDisplay4(int iCameraId, JVision::ImageInfo imageData)
  630. {
  631. QImage image(imageData.data, imageData.width, imageData.height, QImage::Format_Indexed8);
  632. ui->viewwidgetgroup_R->getOperatewidget()->setGeometry(ui->viewwidgetgroup_R->getOperatewidget()->pos().x(),
  633. ui->viewwidgetgroup_R->getOperatewidget()->pos().y(),
  634. ui->viewwidgetgroup_R->getOperatewidget()->width(),
  635. ui->viewwidgetgroup_R->getOperatewidget()->height());
  636. //ui->RightOperatewidget->setPixmap(QPixmap::fromImage(image));
  637. emit UpDataImageShowSignals4(QPixmap::fromImage(image));
  638. }
  639. void MainAndSecondaryCamerasWnd::HideLayout(QHBoxLayout* layout, bool isHide)
  640. {
  641. for (int i = 0; i < layout->count(); ++i)
  642. {
  643. QWidget* widget = layout->itemAt(i)->widget();
  644. if (widget)
  645. {
  646. if (isHide)
  647. {
  648. widget->hide();
  649. }
  650. else
  651. {
  652. widget->show();
  653. }
  654. }
  655. }
  656. }
  657. void MainAndSecondaryCamerasWnd::UpdataLightJoystickSwitchPage(Group* pGroup)
  658. {
  659. auto Fun = [&](LightJoystickSwitchPage* p, bool bShow)
  660. {
  661. p->UpdatemPageGroup(pGroup);
  662. p->InitMainCameraBind(m_pMainCameraBind, bShow);
  663. p->HideOrShowPage(bShow);
  664. };
  665. for (int i = 0; i < m_veCurrentSelectGroup.size(); i++)
  666. {
  667. if (i == 0)
  668. {
  669. bool bShow = false;
  670. if (m_veCurrentSelectGroup[0].nSelectLeft1 == 1)
  671. {
  672. bShow = true;
  673. }
  674. Fun(ui->control_L, bShow);
  675. }
  676. else if (i == 1)
  677. {
  678. bool bShow = false;
  679. if (m_veCurrentSelectGroup[1].nSelectLeft1 == 1)
  680. {
  681. bShow = true;
  682. }
  683. Fun(ui->control_L, bShow);
  684. }
  685. }
  686. }
  687. void MainAndSecondaryCamerasWnd::timerEvent(QTimerEvent* event)
  688. {
  689. int nID = event->timerId();
  690. }
  691. void MainAndSecondaryCamerasWnd::ResetIdleTimer(bool bStart /*= false*/)
  692. {
  693. if (bStart)
  694. {
  695. if (isActiveWindow())
  696. {
  697. m_idleTimer = startTimer(3000);
  698. }
  699. }
  700. else
  701. {
  702. killTimer(m_idleTimer);
  703. m_idleTimer = -1;
  704. }
  705. }
  706. void MainAndSecondaryCamerasWnd::GetCurrentSelectSlots(int groupId, int nIndex)
  707. {
  708. if (m_pMainCameraBind == nullptr)
  709. {
  710. return;
  711. }
  712. // 绑定操作,用来初始化
  713. ST_CURRENT_SELECT_GROUP _curr;
  714. _curr.isBond = true;
  715. m_currentSelectGroup.nGroupId = groupId;
  716. //2. 开始干活
  717. int nOnClickGroupId = groupId - 1; // 这里new 有些是0,有些是1 暂时选择
  718. if (m_pMainCameraBind->m_vecCamera.size() > nOnClickGroupId)
  719. {
  720. _curr.nCurrentCameraId = m_pMainCameraBind->m_vecCamera[nOnClickGroupId].iCameraId;
  721. }
  722. else
  723. {
  724. _curr.nCurrentCameraId = 0;
  725. }
  726. _curr.nSelectLeft1 = nIndex; // 是否选中窗口
  727. Group* pGroup = m_currentSelectGroup.liGroup[nOnClickGroupId];
  728. _curr.pSelectGroup = pGroup;
  729. // 1.判断当前是否存储
  730. if (m_veCurrentSelectGroup.size() >= 2)
  731. {
  732. if (pGroup == m_veCurrentSelectGroup[1].pSelectGroup &&
  733. m_veCurrentSelectGroup[1].nSelectLeft1== nIndex)
  734. {
  735. return;
  736. }
  737. // 解绑操作,删除第0个 ,, 主要目前为了实现 相机切换
  738. disconnect(m_veCurrentSelectGroup[0].pSelectGroup, &Group::SetUpDataImageShowSig,
  739. this, &MainAndSecondaryCamerasWnd::GetUpDataImageShowSignals0);
  740. disconnect(m_veCurrentSelectGroup[0].pSelectGroup, &Group::SetUpDataImageShowSig,
  741. this, &MainAndSecondaryCamerasWnd::GetUpDataImageShowSignals4);
  742. disconnect(m_veCurrentSelectGroup[1].pSelectGroup, &Group::SetUpDataImageShowSig,
  743. this, &MainAndSecondaryCamerasWnd::GetUpDataImageShowSignals0);
  744. disconnect(m_veCurrentSelectGroup[1].pSelectGroup, &Group::SetUpDataImageShowSig,
  745. this, &MainAndSecondaryCamerasWnd::GetUpDataImageShowSignals4);
  746. m_veCurrentSelectGroup.erase(m_veCurrentSelectGroup.begin() + 0);// 0个
  747. if (m_veCurrentSelectGroup[0].nSelectLeft1 == 1)
  748. {
  749. connect(m_veCurrentSelectGroup[0].pSelectGroup, &Group::SetUpDataImageShowSig,
  750. this, &MainAndSecondaryCamerasWnd::GetUpDataImageShowSignals0);
  751. // 在绑定
  752. connect(pGroup, &Group::SetUpDataImageShowSig,
  753. this, &MainAndSecondaryCamerasWnd::GetUpDataImageShowSignals4);
  754. }
  755. else
  756. {
  757. // 直接复制图片?
  758. if (_curr.nSelectLeft1 == 1)
  759. {
  760. connect(m_veCurrentSelectGroup[0].pSelectGroup, &Group::SetUpDataImageShowSig,
  761. this, &MainAndSecondaryCamerasWnd::GetUpDataImageShowSignals4);
  762. }
  763. else
  764. {
  765. //loadGroupSettings(groupId, nIndex);
  766. }
  767. }
  768. m_veCurrentSelectGroup.push_back(_curr);
  769. UpdataLightJoystickSwitchPage(pGroup);
  770. }
  771. else
  772. {
  773. if (m_veCurrentSelectGroup[0].pSelectGroup != _curr.pSelectGroup)
  774. {
  775. if (m_veCurrentSelectGroup.size() == 1)
  776. {
  777. connect(pGroup, &Group::SetUpDataImageShowSig,
  778. this, &MainAndSecondaryCamerasWnd::GetUpDataImageShowSignals4);
  779. }
  780. else
  781. {
  782. connect(pGroup, &Group::SetUpDataImageShowSig,
  783. this, &MainAndSecondaryCamerasWnd::GetUpDataImageShowSignals0);
  784. }
  785. m_veCurrentSelectGroup.push_back(_curr);
  786. UpdataLightJoystickSwitchPage(pGroup);
  787. }
  788. }
  789. }
  790. void MainAndSecondaryCamerasWnd::GetUpDataImageShowSignals0(const QPixmap& imageData)
  791. {
  792. //lastIndex = 1;
  793. QSize size_left = ui->viewwidgetgroup_L->getOperatewidget()->size();
  794. QPixmap scaledPixmap_left = m_lastRightPixmap.scaled(size_left, Qt::KeepAspectRatio, Qt::SmoothTransformation);
  795. ui->viewwidgetgroup_L->getOperatewidget()->setPixmap(scaledPixmap_left);
  796. m_lastRightPixmap = imageData;
  797. //UpdataGroupSettings(imageData);
  798. }
  799. void MainAndSecondaryCamerasWnd::GetUpDataImageShowSignals1(const QPixmap& imageData)
  800. {
  801. // lastIndex = 2;
  802. UpdataGroupSettings(imageData);
  803. }
  804. void MainAndSecondaryCamerasWnd::GetUpDataImageShowSignals4(const QPixmap& imageData)
  805. {
  806. QSize size_left = ui->viewwidgetgroup_R->getOperatewidget()->size();
  807. QPixmap scaledPixmap_left = imageData.scaled(size_left, Qt::KeepAspectRatio, Qt::SmoothTransformation);
  808. ui->viewwidgetgroup_R->getOperatewidget()->setPixmap(scaledPixmap_left);
  809. //m_lastRightPixmap = imageData;
  810. }
  811. void MainAndSecondaryCamerasWnd::wheelEvent(QWheelEvent *event)
  812. {
  813. if (ui->viewwidgetgroup_L->getOperatewidget()->rect().contains(ui->viewwidgetgroup_L->getOperatewidget()->mapFromGlobal(event->globalPos()))) {
  814. mousePos = ui->viewwidgetgroup_L->getOperatewidget()->mapFromGlobal(event->globalPos());
  815. if (event->angleDelta().y() > 0) {
  816. ui->viewwidgetgroup_L->updateScale(Left_scaleFactor * 1.1); // 放大
  817. } else {
  818. ui->viewwidgetgroup_L->updateScale(Left_scaleFactor * 0.9); // 缩小
  819. }
  820. }
  821. if (ui->viewwidgetgroup_R->getOperatewidget()->rect().contains(ui->viewwidgetgroup_R->getOperatewidget()->mapFromGlobal(event->globalPos()))) {
  822. mousePos = ui->viewwidgetgroup_R->getOperatewidget()->mapFromGlobal(event->globalPos());
  823. if (event->angleDelta().y() > 0) {
  824. ui->viewwidgetgroup_R->updateScale(Right_scaleFactor * 1.1); // 放大
  825. } else {
  826. ui->viewwidgetgroup_R->updateScale(Right_scaleFactor * 0.9); // 缩小
  827. }
  828. }
  829. if (ui->scrollArea->rect().contains(ui->scrollArea->mapFromGlobal(event->globalPos()))) {
  830. // 获取 QScrollArea 的横向滚动条
  831. QScrollBar *scrollBar = ui->scrollArea->horizontalScrollBar();
  832. // 根据滚轮滚动方向改变滚动条的值
  833. if (event->angleDelta().y() > 0) {
  834. scrollBar->setValue(scrollBar->value() - 50);
  835. } else {
  836. scrollBar->setValue(scrollBar->value() + 50);
  837. }
  838. }
  839. QMainWindow::wheelEvent(event);
  840. }
  841. bool MainAndSecondaryCamerasWnd::eventFilter(QObject* obj, QEvent* event)
  842. {
  843. // 检测用户活动事件
  844. switch (event->type())
  845. {
  846. case QEvent::KeyPress:
  847. case QEvent::MouseMove:
  848. case QEvent::MouseButtonPress:
  849. case QEvent::MouseButtonDblClick:
  850. case QEvent::Wheel:
  851. ResetIdleTimer();
  852. ResetIdleTimer(true);
  853. break;
  854. default:
  855. break;
  856. }
  857. return QMainWindow::eventFilter(obj, event);
  858. }
  859. void MainAndSecondaryCamerasWnd::showEvent(QShowEvent *event) {
  860. isUpdatingSettings = false;
  861. QMainWindow::showEvent(event);
  862. //loadSettings();
  863. isUpdatingSettings = false;
  864. }
  865. void MainAndSecondaryCamerasWnd::hideEvent(QHideEvent *event) {
  866. isUpdatingSettings = false;
  867. QMainWindow::hideEvent(event);
  868. }
  869. void MainAndSecondaryCamerasWnd::CheckIs()
  870. {
  871. /*QSettings settings("YourCompany", "YourApplication_Button");
  872. int groupId = settings.value("GroupId_button", 0).toInt();
  873. if (groupId == lastGroupId) {
  874. if (lastIndex == 1 ) {
  875. if(isShow == true){
  876. isShow = false;
  877. } else {
  878. isShow = true;
  879. }
  880. }
  881. if (lastLastIndex == 1 && groupId == lastLastGroupId) {
  882. if(isShow_L == true){
  883. isShow_L = false;
  884. } else {
  885. isShow_L = true;
  886. }
  887. }
  888. showAndHide();
  889. showAndHide_L();
  890. } else if (groupId == lastLastGroupId) {
  891. if (lastLastIndex == 1) {
  892. if(isShow_L == true){
  893. isShow_L = false;
  894. } else {
  895. isShow_L = true;
  896. }
  897. }
  898. showAndHide_L();
  899. }*/
  900. }