SingleCameraOperationWnd.cpp 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616
  1. #include "SingleCameraOperationWnd.h"
  2. #include "ui_SingleCameraOperationWnd.h"
  3. #include <QSettings>
  4. #include <QCloseEvent>
  5. #include <QVBoxLayout>
  6. #include <QDebug>
  7. #include <QTimer>
  8. #include "CameraMaterialGroupWnd/CameraImage/CameraImageHandler.h"
  9. SingleCameraOperationWnd::SingleCameraOperationWnd(QWidget *parent)
  10. : JOriginalMainWnd(parent)
  11. , ui(new Ui::SingleCameraOperationWnd), scaleFactor(1.0)
  12. {
  13. ui->setupUi(this);
  14. ui->Operatewidget->m_nSingleCameraOperationWnd = true;
  15. isShow = true;
  16. liveClick = true;
  17. initFrom();
  18. }
  19. SingleCameraOperationWnd::~SingleCameraOperationWnd()
  20. {
  21. delete ui;
  22. }
  23. void SingleCameraOperationWnd::initFrom() {
  24. QTimer *timer = new QTimer(this);
  25. connect(timer, &QTimer::timeout, this, &SingleCameraOperationWnd::checkSettings);
  26. timer->start(100);
  27. ui->label_Percentage->setAlignment(Qt::AlignCenter);
  28. // 设置右下部分
  29. // loadSliderStates();
  30. initSliders();
  31. initLineEdits();
  32. initProgressBar();
  33. // 连接 QSlider 的 valueChanged 信号到 QProgressBar 的 setValue 槽
  34. connect(ui->RedLightverticalSlider, &QSlider::valueChanged, ui->RedLightprogressBar, &QProgressBar::setValue);
  35. connect(ui->BlueLightverticalSlider, &QSlider::valueChanged, ui->BlueLightprogressBar, &QProgressBar::setValue);
  36. connect(ui->GreenLightverticalSlider, &QSlider::valueChanged, ui->GreenLightprogressBar, &QProgressBar::setValue);
  37. connect(ui->DotLightverticalSlider, &QSlider::valueChanged, ui->DotLightprogressBar, &QProgressBar::setValue);
  38. connectSliderAndLineEdit(ui->RedLightverticalSlider, ui->RedLightlineEdit);
  39. connectSliderAndLineEdit(ui->GreenLightverticalSlider, ui->GreenLightlineEdit);
  40. connectSliderAndLineEdit(ui->BlueLightverticalSlider, ui->BlueLightlineEdit);
  41. connectSliderAndLineEdit(ui->DotLightverticalSlider, ui->DotLightlineEdit);
  42. connect(ui->LiveButton,&QPushButton::clicked,this,&SingleCameraOperationWnd::loadLiveVedio);
  43. connect(ui->Operatewidget,&ImageWidget::sendDoubleClicksignal,this,&SingleCameraOperationWnd::handleDoubleClick);
  44. // 设置右上部分
  45. QWidget *viewport = ui->scrollArea->viewport();
  46. QWidget *container = new QWidget(viewport);
  47. QVBoxLayout *layout = new QVBoxLayout(container);
  48. layout->setSpacing(16); // 设置Group之间的间隔距离
  49. layout->setMargin(0);
  50. QList<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8};
  51. QList<Group*> widgets;
  52. for (int i = 0; i < numbers.size(); ++i) {
  53. int num = numbers[i];
  54. CameraImageHandler* manager = new CameraImageHandler(num);
  55. Group* widget = manager->getGroup();
  56. connect(widget,&Group::send_button_Signal,this,&SingleCameraOperationWnd::showAndHideButton);
  57. connect(widget,&Group::send_ComboBox_singal,this,&SingleCameraOperationWnd::handleComBoxChange);
  58. if (widget != nullptr) {
  59. layout->addWidget(widget);
  60. widgets.append(widget);
  61. groupMap[num] = widget;
  62. }
  63. if(manager->getWafer()) {
  64. waferMap.insert(num, manager->getWafer());
  65. }
  66. if(manager->getWafer()) {
  67. waffleMap.insert(num, manager->getWaffle());
  68. }
  69. if(manager->getMaterialBox()){
  70. materialBoxMap.insert(num,manager->getMaterialBox());
  71. }
  72. delete manager;
  73. }
  74. // 设置控件的最小高度和最大宽度
  75. int minHeight = 162;
  76. int maxWidth = 244;
  77. for (Group* w : widgets) {
  78. w->setMinimumHeight(minHeight);
  79. w->setMaximumWidth(maxWidth);
  80. }
  81. container->setLayout(layout);
  82. ui->scrollArea->setWidget(container);
  83. ui->scrollArea->resize(261, 700);
  84. ui->Operatewidget->setMouseTracking(true);
  85. connect(ui->Operatewidget,&ImageWidget::sendDoubleClicksignal,this,&SingleCameraOperationWnd::handleDoubleClick);
  86. connect(ui->DatacomboBox, QOverload<int>::of(&QComboBox::currentIndexChanged),
  87. this, &SingleCameraOperationWnd::on_DatacomboBox_currentIndexChanged);
  88. }
  89. void SingleCameraOperationWnd::closeEvent(QCloseEvent *event) {
  90. // 保存滑块状态
  91. // saveSliderStates();
  92. // 确保调用基类的 closeEvent 处理其他关闭逻辑
  93. QMainWindow::closeEvent(event);
  94. }
  95. void SingleCameraOperationWnd::initSliders() {
  96. QList<QSlider*> sliders = {
  97. ui->RedLightverticalSlider, ui->GreenLightverticalSlider,
  98. ui->BlueLightverticalSlider, ui->DotLightverticalSlider
  99. };
  100. QList<int> initialValues = {22, 11, 0, 0};
  101. for (int i = 0; i < sliders.size(); ++i) {
  102. sliders[i]->setMinimum(0);
  103. sliders[i]->setMaximum(100);
  104. sliders[i]->setValue(initialValues[i]);
  105. }
  106. }
  107. void SingleCameraOperationWnd::initLineEdits() {
  108. QList<QLineEdit*> lineEdits = {
  109. ui->RedLightlineEdit, ui->GreenLightlineEdit,
  110. ui->BlueLightlineEdit, ui->DotLightlineEdit,
  111. };
  112. for (QLineEdit* lineEdit : lineEdits) {
  113. lineEdit->setAlignment(Qt::AlignCenter);
  114. }
  115. }
  116. void SingleCameraOperationWnd::initProgressBar(){
  117. QList<int> initialValues = {22, 11, 0, 0};
  118. QList<QProgressBar*> progressBar = {
  119. ui->RedLightprogressBar,ui->GreenLightprogressBar,
  120. ui->BlueLightprogressBar,ui->DotLightprogressBar
  121. };
  122. for (int i = 0; i < progressBar.size(); ++i) {
  123. progressBar[i]->setMinimum(0);
  124. progressBar[i]->setMaximum(100);
  125. progressBar[i]->setValue(initialValues[i]);
  126. }
  127. }
  128. // void SingleCameraOperationWnd::saveSliderStates() {
  129. // QSettings settings("YourCompany", "YourApp");
  130. // settings.beginGroup("SliderStates");
  131. // settings.setValue("verticalSlider", ui->verticalSlider->value());
  132. // settings.setValue("verticalSlider_2", ui->verticalSlider_2->value());
  133. // settings.setValue("verticalSlider_3", ui->verticalSlider_3->value());
  134. // settings.setValue("verticalSlider_4", ui->verticalSlider_4->value());
  135. // settings.setValue("verticalSlider_5", ui->verticalSlider_5->value());
  136. // settings.setValue("verticalSlider_6", ui->verticalSlider_6->value());
  137. // settings.endGroup();
  138. // }
  139. // void SingleCameraOperationWnd::loadSliderStates() {
  140. // QSettings settings("YourCompany", "YourApp");
  141. // settings.beginGroup("SliderStates");
  142. // ui->verticalSlider->setValue(settings.value("verticalSlider", 11).toInt());
  143. // ui->verticalSlider_2->setValue(settings.value("verticalSlider_2", 22).toInt());
  144. // ui->verticalSlider_3->setValue(settings.value("verticalSlider_3", 9).toInt());
  145. // ui->verticalSlider_4->setValue(settings.value("verticalSlider_4", 11).toInt());
  146. // ui->verticalSlider_5->setValue(settings.value("verticalSlider_5", 0).toInt());
  147. // ui->verticalSlider_6->setValue(settings.value("verticalSlider_6", 0).toInt());
  148. // settings.endGroup();
  149. // }
  150. // QSlider 和 QLineEdit 的联动
  151. void SingleCameraOperationWnd::connectSliderAndLineEdit(QSlider* slider, QLineEdit* lineEdit)
  152. {
  153. QIntValidator* validator = new QIntValidator(slider->minimum(), slider->maximum(), lineEdit);
  154. lineEdit->setValidator(validator);
  155. connect(slider, &QSlider::valueChanged, [lineEdit](int value) {
  156. lineEdit->setText(QString::number(value));
  157. });
  158. connect(lineEdit, &QLineEdit::textChanged, [slider](const QString &text) {
  159. bool ok;
  160. int value = text.toInt(&ok);
  161. if (ok && value >= slider->minimum() && value <= slider->maximum()) {
  162. slider->setValue(value);
  163. } else if (!text.isEmpty()) {
  164. int closestValue = qMin(qMax(text.toInt(&ok), slider->minimum()), slider->maximum());
  165. slider->setValue(closestValue);
  166. }
  167. });
  168. }
  169. void SingleCameraOperationWnd::checkSettings() {
  170. QSettings settings("YourCompany", "YourApplication_");
  171. int groupId = settings.value("GroupId", 0).toInt();
  172. int index = settings.value("Index", 0).toInt();
  173. if (groupId != lastGroupId || index != lastIndex) {
  174. lastGroupId = groupId;
  175. lastIndex = index;
  176. loadSettings();
  177. }
  178. }
  179. void SingleCameraOperationWnd::loadSettings()
  180. {
  181. QSettings settings("YourCompany", "YourApplication_");
  182. int groupId = settings.value("GroupId", 0).toInt();
  183. int index = settings.value("Index", 0).toInt();
  184. loadGroupSettings(groupId, index);
  185. }
  186. void SingleCameraOperationWnd::loadGroupSettings(int Id, int Index) {
  187. QSettings settings("YourOrganization", "YourApplication");
  188. settings.beginGroup(QString::number(Id));
  189. QString imagePath1 = settings.value("ImagePath1").toString();
  190. int materialWndType = settings.value("MaterialWndType").toInt();
  191. QStringList textList = settings.value("TextList").toStringList();
  192. settings.endGroup();
  193. QSize size = ui->Operatewidget->size();
  194. QPixmap newPixmap;
  195. // 判断是实时图片还是物料窗口
  196. if (Index == 1) {
  197. clearLayout();
  198. newPixmap = QPixmap(imagePath1);
  199. QPixmap scaledPixmap = newPixmap.scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation);
  200. currentMode = ModeImage;
  201. currentPixmap = scaledPixmap;
  202. scaleFactor = 1.0;
  203. previousScaleFactor = 1.0;
  204. ui->Operatewidget->setPixmap(scaledPixmap);
  205. double percentage = scaleFactor * 100;
  206. QString percentageStr = QString::number((int)percentage);
  207. ui->label_Percentage->setText(QString("%1%").arg(percentageStr));
  208. } else if (Index == 2) {
  209. if (materialWndType == 1) {
  210. clearLayout();
  211. ui->Operatewidget->clearPixmap();
  212. QVBoxLayout *layout = new QVBoxLayout(ui->Operatewidget);
  213. waferMap.value(Id)->initFrom(ui->Operatewidget);
  214. layout->setContentsMargins(0, 0, 0, 0);
  215. layout->addWidget(waferMap.value(Id)->view);
  216. ui->Operatewidget->setLayout(layout);
  217. currentMode = ModeView;
  218. currentView = waferMap.value(Id)->view;
  219. scaleFactor = 1.0;
  220. applyScale();
  221. } else if (materialWndType == 2) {
  222. clearLayout();
  223. ui->Operatewidget->clearPixmap();
  224. QVBoxLayout *layout = new QVBoxLayout(ui->Operatewidget);
  225. waffleMap.value(Id)->initFrom(ui->Operatewidget);
  226. layout->setContentsMargins(0, 0, 0, 0);
  227. layout->addWidget(waffleMap.value(Id)->view);
  228. ui->Operatewidget->setLayout(layout);
  229. currentMode = ModeView;
  230. currentView = waffleMap.value(Id)->view;
  231. scaleFactor = 1.0;
  232. applyScale();
  233. } else if (materialWndType == 3) {
  234. clearLayout();
  235. QVBoxLayout *layout = new QVBoxLayout(ui->Operatewidget);
  236. materialBoxMap.value(Id)->initFrom(ui->Operatewidget);
  237. layout->setContentsMargins(0, 0, 0, 0);
  238. layout->addWidget(materialBoxMap.value(Id)->view);
  239. ui->Operatewidget->setLayout(layout);
  240. currentMode = ModeView;
  241. currentView = materialBoxMap.value(Id)->view;
  242. scaleFactor = 1.0;
  243. applyScale();
  244. // MaterialBoxWidget();
  245. }
  246. }
  247. //QPixmap scaledPixmap = newPixmap.scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation);
  248. //ui->Operatewidget->setPixmap(scaledPixmap);
  249. // 更新当前图片的成员变量
  250. //currentPixmap = scaledPixmap;
  251. //scaleFactor = 1.0;
  252. //ui->label_Percentage->setText("100%");
  253. ui->DatacomboBox->clear();
  254. ui->DatacomboBox->addItems(textList);
  255. // qDebug() << "ComboBox items added:" << ui->DatacomboBox->count();
  256. // connect(ui->DatacomboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(SingleCameraOperationWnd::onComboBoxIndexChanged(int)));
  257. }
  258. // 清除大窗口上当前的布局
  259. void SingleCameraOperationWnd::clearLayout() {
  260. // 获取当前布局
  261. QLayout* layout = ui->Operatewidget->layout();
  262. if (layout) {
  263. QLayoutItem *child;
  264. while ((child = layout->takeAt(0)) != nullptr) {
  265. if (child->widget() != nullptr) {
  266. delete child->widget(); // 删除控件
  267. }
  268. delete child; // 删除布局项
  269. }
  270. delete layout; // 删除布局本身
  271. }
  272. }
  273. // 圆晶
  274. void SingleCameraOperationWnd::WaferWidget() {
  275. // QGridLayout *layout = new QGridLayout(ui->Operatewidget);
  276. // wafer = new Wafer(2, ui->Operatewidget);
  277. // wafer->initFrom(ui->Operatewidget);
  278. // layout->setContentsMargins(0, 0, 0, 0);
  279. // layout->addWidget(wafer->globalWidget);
  280. // ui->Operatewidget->setLayout(layout);
  281. // ui->Operatewidget->setFixedSize(786, 786);
  282. }
  283. // 华夫盒
  284. void SingleCameraOperationWnd::WaffleWidget() {
  285. QVBoxLayout *layout = new QVBoxLayout(ui->Operatewidget);
  286. waffle = new Waffle(2, ui->Operatewidget);
  287. layout->setContentsMargins(0, 0, 0, 0);
  288. layout->addWidget(waffle);
  289. ui->Operatewidget->setLayout(layout);
  290. ui->Operatewidget->setFixedSize(786, 786);
  291. }
  292. // 料盒
  293. void SingleCameraOperationWnd::MaterialBoxWidget() {
  294. QVBoxLayout *layout = new QVBoxLayout(ui->Operatewidget);
  295. materialbox = new MaterialBox(2, ui->Operatewidget);
  296. layout->setContentsMargins(0, 0, 0, 0);
  297. layout->addWidget(materialbox);
  298. ui->Operatewidget->setLayout(layout);
  299. ui->Operatewidget->setFixedSize(786, 786);
  300. }
  301. // 更新缩放比例
  302. void SingleCameraOperationWnd::updateScale(double newScaleFactor) {
  303. if (newScaleFactor >= 1.0) {
  304. scaleFactor = newScaleFactor;
  305. } else {
  306. scaleFactor = 1.0; // 最小缩放比例为 1.0
  307. }
  308. applyScale(); // 应用缩放
  309. }
  310. // 应用缩放
  311. void SingleCameraOperationWnd::applyScale() {
  312. if (currentMode == ModeImage) {
  313. // 图片模式:缩放图片
  314. int newWidth = currentPixmap.width() * scaleFactor;
  315. int newHeight = currentPixmap.height() * scaleFactor;
  316. QPixmap scaledImage = currentPixmap.scaled(newWidth, newHeight, Qt::KeepAspectRatio, Qt::SmoothTransformation);
  317. ui->Operatewidget->setPixmapAndPoint(scaledImage, previousScaleFactor, scaleFactor, mousePos);
  318. previousScaleFactor = scaleFactor;
  319. } else if (currentMode == ModeView && currentView) {
  320. // View 模式:缩放 view
  321. QTransform transform;
  322. transform.scale(scaleFactor, scaleFactor);
  323. currentView->setTransform(transform);
  324. }
  325. // 更新百分比显示
  326. double percentage = scaleFactor * 100;
  327. QString percentageStr = QString::number((int)percentage);
  328. ui->label_Percentage->setText(QString("%1%").arg(percentageStr));
  329. }
  330. void SingleCameraOperationWnd::on_ZoomUpButton_clicked() {
  331. mousePos = ui->Operatewidget->geometry().center();
  332. updateScale(scaleFactor * 1.1);
  333. }
  334. void SingleCameraOperationWnd::on_ZoomOutButton_clicked() {
  335. mousePos = ui->Operatewidget->geometry().center();
  336. updateScale(scaleFactor * 0.9);
  337. }
  338. void SingleCameraOperationWnd::on_RulerButton_clicked(){
  339. // 创建初始线段(示例长度200像素)
  340. // DraggableLine* line = new DraggableLine;
  341. // line->setLine(0, 0, 200, 0); // 水平线段
  342. // if (currentView != nullptr) {
  343. // currentView->scene()->addItem(line);
  344. // line->setPos(20, 20);
  345. // currentView->viewport()->update();
  346. // }
  347. }
  348. void SingleCameraOperationWnd::InitMainCameraBind(CameraBind* pCameraBind)
  349. {
  350. }
  351. void SingleCameraOperationWnd::UpdateCameraDisplay0(int iCameraId, JVision::ImageInfo imageData)
  352. {
  353. }
  354. void SingleCameraOperationWnd::UpdateCameraDisplay1(int iCameraId, JVision::ImageInfo imageData)
  355. {
  356. }
  357. void SingleCameraOperationWnd::UpdateCameraDisplay2(int iCameraId, JVision::ImageInfo imageData)
  358. {
  359. }
  360. void SingleCameraOperationWnd::UpdateCameraDisplay3(int iCameraId, JVision::ImageInfo imageData)
  361. {
  362. }
  363. void SingleCameraOperationWnd::UpdateCameraDisplay4(int iCameraId, JVision::ImageInfo imageData)
  364. {
  365. }
  366. void SingleCameraOperationWnd::wheelEvent(QWheelEvent *event)
  367. {
  368. mousePos = ui->Operatewidget->mapFromGlobal(event->globalPos());
  369. if (ui->Operatewidget->rect().contains(ui->Operatewidget->mapFromGlobal(event->globalPos()))) {
  370. if (event->angleDelta().y() > 0) {
  371. updateScale(scaleFactor * 1.1); // 放大
  372. } else {
  373. updateScale(scaleFactor * 0.9); // 缩小
  374. }
  375. }
  376. if (ui->scrollArea->rect().contains(ui->scrollArea->mapFromGlobal(event->globalPos()))) {
  377. // 获取 QScrollArea 的横向滚动条
  378. QScrollBar *scrollBar = ui->scrollArea->horizontalScrollBar();
  379. // 根据滚轮滚动方向改变滚动条的值
  380. if (event->angleDelta().y() > 0) {
  381. scrollBar->setValue(scrollBar->value() - 50);
  382. } else {
  383. scrollBar->setValue(scrollBar->value() + 50);
  384. }
  385. }
  386. QMainWindow::wheelEvent(event);
  387. }
  388. void SingleCameraOperationWnd::onComboBoxIndexChanged(int index) {
  389. // 根据index获取图片路径
  390. QString imagePath = getImagePathFromIndex(index);
  391. if (!imagePath.isEmpty()) {
  392. QPixmap newPixmap(imagePath);
  393. QPixmap scaledPixmap = newPixmap.scaled(ui->Operatewidget->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
  394. ui->Operatewidget->setPixmap(scaledPixmap);
  395. // 更新当前图片的成员变量
  396. currentPixmap = scaledPixmap;
  397. scaleFactor = 1.0;
  398. ui->label_Percentage->setText("100%");
  399. }
  400. }
  401. QString SingleCameraOperationWnd::getImagePathFromIndex(int index) {
  402. QStringList imagePaths = {
  403. ":/images/test_image/image.png",
  404. ":/images/test_image/image_2.png",
  405. };
  406. if (index >= 0 && index < imagePaths.size()) {
  407. return imagePaths[index];
  408. }
  409. return ":/images/test_image/image.png";
  410. }
  411. void SingleCameraOperationWnd::showEvent(QShowEvent *event) {
  412. QMainWindow::showEvent(event);
  413. loadSettings();
  414. }
  415. void SingleCameraOperationWnd::hideEvent(QHideEvent *event) {
  416. QMainWindow::hideEvent(event);
  417. }
  418. void SingleCameraOperationWnd::handleDoubleClick(){
  419. if (currentMode == ModeImage) {
  420. QPixmap scaledImage = currentPixmap.scaled(currentPixmap.width(), currentPixmap.height(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
  421. ui->Operatewidget->setPixmap(scaledImage); // 这里传递缩放后的图片
  422. } else if (currentMode == ModeView && currentView) {
  423. QTransform transform;
  424. transform.scale(1, 1);
  425. currentView->setTransform(transform);
  426. }
  427. scaleFactor = 1.0;
  428. previousScaleFactor = 1.0;
  429. ui->label_Percentage->setText("100%");
  430. }
  431. void SingleCameraOperationWnd::showAndHideButton(){
  432. if(isShow == true){
  433. isShow = false;
  434. }else{
  435. isShow = true;
  436. }
  437. QList<QLineEdit*> lineEdits = {
  438. ui->RedLightlineEdit, ui->GreenLightlineEdit,
  439. ui->BlueLightlineEdit, ui->DotLightlineEdit,
  440. };
  441. QList<QSlider*> sliders = {
  442. ui->RedLightverticalSlider, ui->GreenLightverticalSlider,
  443. ui->BlueLightverticalSlider, ui->DotLightverticalSlider
  444. };
  445. QList<QProgressBar*> progressBar = {
  446. ui->RedLightprogressBar,ui->GreenLightprogressBar,
  447. ui->BlueLightprogressBar,ui->DotLightprogressBar
  448. };
  449. if(isShow == true){
  450. for (QLineEdit* lineEdit : lineEdits) {
  451. lineEdit->show();
  452. }
  453. for (int i = 0; i < sliders.size(); ++i) {
  454. sliders[i]->show();
  455. }
  456. for (int i = 0; i < progressBar.size(); ++i) {
  457. progressBar[i]->show();
  458. }
  459. ui->BlueLight->show();
  460. ui->RedLight->show();
  461. ui->DotLight->show();
  462. ui->GreenLight->show();
  463. ui->BlueLightlabel->show();
  464. ui->RedLightlabel->show();
  465. ui->DotLightlabel->show();
  466. ui->GreenLightlabel->show();
  467. }else{
  468. for (QLineEdit* lineEdit : lineEdits) {
  469. lineEdit->hide();
  470. }
  471. for (int i = 0; i < sliders.size(); ++i) {
  472. sliders[i]->hide();
  473. }
  474. for (int i = 0; i < progressBar.size(); ++i) {
  475. progressBar[i]->hide();
  476. }
  477. ui->BlueLight->hide();
  478. ui->RedLight->hide();
  479. ui->DotLight->hide();
  480. ui->GreenLight->hide();
  481. ui->BlueLightlabel->hide();
  482. ui->RedLightlabel->hide();
  483. ui->DotLightlabel->hide();
  484. ui->GreenLightlabel->hide();
  485. }
  486. }
  487. void SingleCameraOperationWnd::startCamera(int cameraId) {
  488. m_grabber = new ImageGrabber(cameraId);
  489. connect(m_grabber, &ImageGrabber::imageGrabbed,
  490. this, &SingleCameraOperationWnd::updateImage);
  491. m_grabber->start();
  492. }
  493. void SingleCameraOperationWnd::stopCamera(int cameraId){
  494. m_grabber->stop();
  495. }
  496. void SingleCameraOperationWnd::on_DatacomboBox_currentIndexChanged(int index){
  497. QSettings settings("YourCompany", "YourApplication_");
  498. int groupId = settings.value("GroupId", 0).toInt();
  499. if (groupMap.contains(groupId)) {
  500. Group* group = groupMap[groupId];
  501. // 修改属性
  502. group->setDatacomboBox(index);
  503. } else {
  504. qDebug() << "Group with id" << groupId << "not found.";
  505. }
  506. }
  507. void SingleCameraOperationWnd::handleComBoxChange(int groupId,int index){
  508. QSettings settings("YourCompany", "YourApplication_");
  509. int currentGroupId = settings.value("GroupId", 0).toInt();
  510. if(currentGroupId == groupId){
  511. ui->DatacomboBox->setCurrentIndex(index);
  512. }
  513. }
  514. void SingleCameraOperationWnd::updateImage(const QImage&image){
  515. QPixmap pixmap = QPixmap::fromImage(image);
  516. QSize size = ui->Operatewidget->size();
  517. // QPixmap scaledPixmap = pixmap.scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation);
  518. QPixmap scaledPixmap = pixmap.scaled(size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
  519. ui->Operatewidget->setPixmap(scaledPixmap);
  520. }
  521. void SingleCameraOperationWnd::loadLiveVedio(){
  522. if(liveClick == true){
  523. startCamera(0);
  524. liveClick = false;
  525. }else{
  526. stopCamera(0);
  527. liveClick = true;
  528. }
  529. }