LineItem.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /*
  2. * LineItem.cpp, part of VCMI engine
  3. *
  4. * Authors: listed in file AUTHORS in main folder
  5. *
  6. * License: GNU General Public License v2.0 or later
  7. * Full text of license available in license.txt file, in main folder
  8. *
  9. */
  10. #include "StdInc.h"
  11. #include "LineItem.h"
  12. #include <QObject>
  13. LineItem::LineItem():
  14. clickCallback(nullptr)
  15. {
  16. setZValue(-2);
  17. for(int i = 0; i < 10; i++) // render multiple times to increase outline effect
  18. {
  19. auto tmpTextItem = new QGraphicsTextItem(this);
  20. tmpTextItem->setZValue(-1);
  21. QFont font;
  22. font.setPointSize(18);
  23. tmpTextItem->setFont(font);
  24. QGraphicsDropShadowEffect *shadowEffect = new QGraphicsDropShadowEffect();
  25. shadowEffect->setBlurRadius(10);
  26. shadowEffect->setEnabled(true);
  27. shadowEffect->setOffset(0, 0);
  28. shadowEffect->setColor(Qt::black);
  29. tmpTextItem->setGraphicsEffect(shadowEffect);
  30. tmpTextItem->setDefaultTextColor(Qt::white);
  31. textItem.push_back(tmpTextItem);
  32. }
  33. }
  34. void LineItem::setLineToolTip(const QString &toolTip)
  35. {
  36. for(auto & tmpTextItem : textItem)
  37. tmpTextItem->setToolTip(toolTip);
  38. setToolTip(toolTip);
  39. }
  40. void LineItem::setClickCallback(std::function<void()> func)
  41. {
  42. clickCallback = func;
  43. }
  44. void LineItem::setText(QString text)
  45. {
  46. for(auto & tmpTextItem : textItem)
  47. {
  48. tmpTextItem->setPlainText(text);
  49. QRectF lineRect = boundingRect();
  50. QRectF textRect = tmpTextItem->boundingRect();
  51. tmpTextItem->setPos(QPointF(lineRect.x() + (lineRect.width() / 2) - (textRect.width() / 2), lineRect.y() + (lineRect.height() / 2) - (textRect.height() / 2)));
  52. }
  53. }
  54. void LineItem::setId(int val)
  55. {
  56. id = val;
  57. }
  58. int LineItem::getId()
  59. {
  60. return id;
  61. }
  62. void LineItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
  63. {
  64. if(event->button() == Qt::LeftButton && clickCallback)
  65. clickCallback();
  66. QGraphicsLineItem::mousePressEvent(event);
  67. }