DieItem.cpp 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. void DieItem::updateAppearance() {
  49. // 根据状态设置颜色
  50. QColor fillColor;
  51. if (m_info.bDisable) {
  52. fillColor = Qt::darkGray;
  53. }
  54. else {
  55. switch (m_info.eStatus) {
  56. case ns_mat::PICK_DIE_STATUS::DIE_EXIST: fillColor = Qt::green; break; //绿色
  57. case ns_mat::PICK_DIE_STATUS::NO_EXIST: fillColor = QColor(200, 200, 200); break;// 浅灰
  58. case ns_mat::PICK_DIE_STATUS::PICK_ING : fillColor = QColor(255, 255, 0);// 黄色
  59. case ns_mat::PICK_DIE_STATUS::SKIP_DIE : fillColor = QColor(128, 128, 128); // 深灰
  60. case ns_mat::PICK_DIE_STATUS::EDGE_DIE: fillColor = QColor(255, 165, 0); // 橙色
  61. default: fillColor = Qt::gray; break;
  62. }
  63. }
  64. setPen(QPen(Qt::black, 1));
  65. setBrush(fillColor);
  66. }
  67. void DieItem::hoverEnterEvent(QGraphicsSceneHoverEvent*) {
  68. setZValue(1); // 悬停时提升Z值
  69. update();
  70. }
  71. void DieItem::hoverLeaveEvent(QGraphicsSceneHoverEvent*) {
  72. setZValue(0);
  73. update();
  74. }