| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- /*
- * LineItem.cpp, part of VCMI engine
- *
- * Authors: listed in file AUTHORS in main folder
- *
- * License: GNU General Public License v2.0 or later
- * Full text of license available in license.txt file, in main folder
- *
- */
- #include "StdInc.h"
- #include "LineItem.h"
- #include <QObject>
- LineItem::LineItem():
- clickCallback(nullptr)
- {
- setZValue(-2);
- for(int i = 0; i < 10; i++) // render multiple times to increase outline effect
- {
- auto tmpTextItem = new QGraphicsTextItem(this);
- tmpTextItem->setZValue(-1);
- QFont font;
- font.setPointSize(18);
- tmpTextItem->setFont(font);
- QGraphicsDropShadowEffect *shadowEffect = new QGraphicsDropShadowEffect();
- shadowEffect->setBlurRadius(10);
- shadowEffect->setEnabled(true);
- shadowEffect->setOffset(0, 0);
- shadowEffect->setColor(Qt::black);
- tmpTextItem->setGraphicsEffect(shadowEffect);
- tmpTextItem->setDefaultTextColor(Qt::white);
- textItem.push_back(tmpTextItem);
- }
- }
- void LineItem::setLineToolTip(const QString &toolTip)
- {
- for(auto & tmpTextItem : textItem)
- tmpTextItem->setToolTip(toolTip);
- setToolTip(toolTip);
- }
- void LineItem::setClickCallback(std::function<void()> func)
- {
- clickCallback = func;
- }
- void LineItem::setText(QString text)
- {
- for(auto & tmpTextItem : textItem)
- {
- tmpTextItem->setPlainText(text);
- QRectF lineRect = boundingRect();
- QRectF textRect = tmpTextItem->boundingRect();
- tmpTextItem->setPos(QPointF(lineRect.x() + (lineRect.width() / 2) - (textRect.width() / 2), lineRect.y() + (lineRect.height() / 2) - (textRect.height() / 2)));
- }
- }
- void LineItem::setId(int val)
- {
- id = val;
- }
- int LineItem::getId()
- {
- return id;
- }
- void LineItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
- {
- if(event->button() == Qt::LeftButton && clickCallback)
- clickCallback();
- QGraphicsLineItem::mousePressEvent(event);
- }
|