WaferGraphicsView.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #include "WaferGraphicsView.h"
  2. #include <QDebug>
  3. WaferGraphicsView::WaferGraphicsView(QGraphicsScene* scene, QWidget* parent)
  4. : QGraphicsView(scene, parent), selecting(false), selectionRect(nullptr), scaleFactor(1.0) {
  5. setRenderHint(QPainter::Antialiasing);
  6. setDragMode(QGraphicsView::ScrollHandDrag); // 支持拖动视图
  7. }
  8. // void WaferGraphicsView::mousePressEvent(QMouseEvent* event) {
  9. // if (event->button() == Qt::LeftButton) {
  10. // // 开始框选
  11. // selecting = true;
  12. // selectionStart = mapToScene(event->pos());
  13. // if (!selectionRect) {
  14. // selectionRect = new QGraphicsRectItem();
  15. // selectionRect->setPen(QPen(Qt::DashLine));
  16. // selectionRect->setBrush(QBrush(QColor(0, 0, 255, 50))); // 半透明蓝色
  17. // scene()->addItem(selectionRect);
  18. // }
  19. // selectionRect->setRect(QRectF(selectionStart, QSizeF()));
  20. // }
  21. // QGraphicsView::mousePressEvent(event);
  22. // }
  23. // void WaferGraphicsView::mouseMoveEvent(QMouseEvent* event) {
  24. // if (selecting && selectionRect) {
  25. // QPointF currentPos = mapToScene(event->pos());
  26. // selectionRect->setRect(QRectF(selectionStart, currentPos).normalized());
  27. // }
  28. // QGraphicsView::mouseMoveEvent(event);
  29. // }
  30. // void WaferGraphicsView::mouseReleaseEvent(QMouseEvent* event) {
  31. // if (event->button() == Qt::LeftButton && selecting) {
  32. // selecting = false;
  33. // if (selectionRect) {
  34. // QRectF selectedArea = selectionRect->rect();
  35. // scene()->removeItem(selectionRect);
  36. // delete selectionRect;
  37. // selectionRect = nullptr;
  38. // // 输出选中区域内的晶圆信息
  39. // QList<QGraphicsItem*> items = scene()->items(selectedArea, Qt::IntersectsItemShape);
  40. // qDebug() << "Selected Dies:";
  41. // for (QGraphicsItem* item : items) {
  42. // DieItem* die = dynamic_cast<DieItem*>(item);
  43. // if (die) {
  44. // qDebug() << "Row:" << die->getRow() << "Col:" << die->getCol();
  45. // }
  46. // }
  47. // }
  48. // }
  49. // QGraphicsView::mouseReleaseEvent(event);
  50. // }
  51. void WaferGraphicsView::wheelEvent(QWheelEvent* event) {
  52. const double zoomFactor = 1.1; // 每次缩放的倍率
  53. const double minScale = 1;
  54. const double maxScale = 10.0;
  55. if (event->angleDelta().y() > 0) {
  56. if (scaleFactor < maxScale) {
  57. scale(zoomFactor, zoomFactor);
  58. scaleFactor *= zoomFactor;
  59. }
  60. } else {
  61. if (scaleFactor > minScale) {
  62. scale(1.0 / zoomFactor, 1.0 / zoomFactor);
  63. scaleFactor /= zoomFactor;
  64. }
  65. }
  66. event->accept();
  67. }