DieItem.cpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #include "DieItem.h"
  2. void DieItem::setSelected(bool selected) {
  3. if (selected) {
  4. setPen(QPen(Qt::red, 1));
  5. setZValue(1);
  6. } else {
  7. setPen(QPen(Qt::black, 0.5)); // 未选中时恢复为黑色边框
  8. setZValue(0);
  9. }
  10. // qDebug() << "DieItem clicked: Row:" << row << "Col:" << col;
  11. }
  12. void DieItem::setLeftSelected(bool selected) {
  13. if (selected) {
  14. setPen(QPen(Qt::green, 1));
  15. setZValue(1);
  16. } else {
  17. setPen(QPen(Qt::black, 0.5)); // 未选中时恢复为黑色边框
  18. setZValue(0);
  19. }
  20. // qDebug() << "DieItem clicked: Row:" << row << "Col:" << col;
  21. }
  22. void DieItem::setRightSelected(bool selected) {
  23. if (selected) {
  24. setPen(QPen(QColor("#00F5FF"), 1));
  25. setZValue(1);
  26. } else {
  27. setPen(QPen(Qt::black, 0.5)); // 未选中时恢复为黑色边框
  28. setZValue(0);
  29. }
  30. // qDebug() << "DieItem clicked: Row:" << row << "Col:" << col;
  31. }
  32. QColor DieItem::getColorByStatus(ns_mat::PICK_DIE_STATUS status) {
  33. switch (status) {
  34. case ns_mat::PICK_DIE_STATUS::DIE_EXIST: return QColor(0, 102, 255); // 蓝色
  35. case ns_mat::PICK_DIE_STATUS::NO_EXIST: return QColor(200, 200, 200); // 浅灰
  36. case ns_mat::PICK_DIE_STATUS::PICK_ING: return QColor(255, 255, 0); // 黄色
  37. case ns_mat::PICK_DIE_STATUS::SKIP_DIE: return QColor(128, 128, 128); // 深灰
  38. case ns_mat::PICK_DIE_STATUS::EDGE_DIE: return QColor(255, 165, 0); // 橙色
  39. default: return QColor(0, 0, 0);
  40. }
  41. }
  42. int DieItem::getRow() const {
  43. return row;
  44. }
  45. int DieItem::getCol() const {
  46. return col;
  47. }
  48. int DieItem::getMatrixId() const {
  49. return matrixId;
  50. }
  51. int DieItem::getDieIndex() const {
  52. return dieIndex;
  53. }
  54. void DieItem::updateAppearance() {
  55. // 根据状态设置颜色
  56. QColor fillColor;
  57. if (m_info.bDisable) {
  58. fillColor = Qt::darkGray;
  59. }
  60. else {
  61. switch (m_info.eStatus) {
  62. case ns_mat::PICK_DIE_STATUS::DIE_EXIST: fillColor = Qt::green; break; //绿色
  63. case ns_mat::PICK_DIE_STATUS::NO_EXIST: fillColor = QColor(200, 200, 200); break;// 浅灰
  64. case ns_mat::PICK_DIE_STATUS::PICK_ING : fillColor = QColor(255, 255, 0);// 黄色
  65. case ns_mat::PICK_DIE_STATUS::SKIP_DIE : fillColor = QColor(128, 128, 128); // 深灰
  66. case ns_mat::PICK_DIE_STATUS::EDGE_DIE: fillColor = QColor(255, 165, 0); // 橙色
  67. default: fillColor = Qt::gray; break;
  68. }
  69. }
  70. setPen(QPen(Qt::black, 1));
  71. setBrush(fillColor);
  72. row = m_info.nDieRow;
  73. col = m_info.nDieCol;
  74. matrixId = m_info.nDieMatrixId;
  75. dieIndex = m_info.iDieIndex;
  76. }
  77. void DieItem::hoverEnterEvent(QGraphicsSceneHoverEvent*) {
  78. setZValue(1); // 悬停时提升Z值
  79. update();
  80. }
  81. void DieItem::hoverLeaveEvent(QGraphicsSceneHoverEvent*) {
  82. setZValue(0);
  83. update();
  84. }