mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-18 13:30:34 +01:00
Graphics item handler is bigger when overred
This commit is contained in:
@@ -19,6 +19,7 @@
|
|||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
#include <QPropertyAnimation>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@brief QetGraphicsHandlerItem::QetGraphicsHandlerItem
|
@brief QetGraphicsHandlerItem::QetGraphicsHandlerItem
|
||||||
@@ -26,6 +27,7 @@
|
|||||||
*/
|
*/
|
||||||
QetGraphicsHandlerItem::QetGraphicsHandlerItem(qreal size)
|
QetGraphicsHandlerItem::QetGraphicsHandlerItem(qreal size)
|
||||||
{
|
{
|
||||||
|
setAcceptHoverEvents(true);
|
||||||
setFlag(QGraphicsItem::ItemIgnoresTransformations);
|
setFlag(QGraphicsItem::ItemIgnoresTransformations);
|
||||||
setSize(size);
|
setSize(size);
|
||||||
}
|
}
|
||||||
@@ -33,9 +35,9 @@ QetGraphicsHandlerItem::QetGraphicsHandlerItem(qreal size)
|
|||||||
void QetGraphicsHandlerItem::setSize(qreal size)
|
void QetGraphicsHandlerItem::setSize(qreal size)
|
||||||
{
|
{
|
||||||
prepareGeometryChange();
|
prepareGeometryChange();
|
||||||
m_size = size;
|
m_current_size = m_original_size = size;
|
||||||
m_handler_rect.setRect(0-m_size/2, 0-m_size/2, m_size, m_size);
|
m_handler_rect.setRect(0-m_current_size/2, 0-m_current_size/2, m_current_size, m_current_size);
|
||||||
m_br.setRect(-1-m_size/2, -1-m_size/2, m_size+2, m_size+2);
|
m_br.setRect(-1-m_current_size/2, -1-m_current_size/2, m_current_size+2, m_current_size+2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -84,6 +86,38 @@ void QetGraphicsHandlerItem::paint(QPainter *painter,
|
|||||||
painter->restore();
|
painter->restore();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QetGraphicsHandlerItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
|
||||||
|
{
|
||||||
|
Q_UNUSED(event);
|
||||||
|
|
||||||
|
auto animation_ = new QPropertyAnimation(this, "currentSize");
|
||||||
|
animation_->setStartValue(m_original_size);
|
||||||
|
animation_->setEndValue(m_original_size*1.5);
|
||||||
|
animation_->setDuration(200);
|
||||||
|
animation_->setEasingCurve(QEasingCurve::OutBack);
|
||||||
|
animation_->start(QAbstractAnimation::DeleteWhenStopped);
|
||||||
|
}
|
||||||
|
|
||||||
|
void QetGraphicsHandlerItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
|
||||||
|
{
|
||||||
|
Q_UNUSED(event);
|
||||||
|
|
||||||
|
auto animation_ = new QPropertyAnimation(this, "currentSize");
|
||||||
|
animation_->setStartValue(m_current_size);
|
||||||
|
animation_->setEndValue(m_original_size);
|
||||||
|
animation_->setDuration(200);
|
||||||
|
animation_->setEasingCurve(QEasingCurve::OutBack);
|
||||||
|
animation_->start(QAbstractAnimation::DeleteWhenStopped);
|
||||||
|
}
|
||||||
|
|
||||||
|
void QetGraphicsHandlerItem::setCurrentSize(qreal size)
|
||||||
|
{
|
||||||
|
prepareGeometryChange();
|
||||||
|
m_current_size = size;
|
||||||
|
m_handler_rect.setRect(0-m_current_size/2, 0-m_current_size/2, m_current_size, m_current_size);
|
||||||
|
m_br.setRect(-1-m_current_size/2, -1-m_current_size/2, m_current_size+2, m_current_size+2);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@brief QetGraphicsHandlerItem::handlerForPoint
|
@brief QetGraphicsHandlerItem::handlerForPoint
|
||||||
@param points
|
@param points
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
#ifndef QETGRAPHICSHANDLERITEM_H
|
#ifndef QETGRAPHICSHANDLERITEM_H
|
||||||
#define QETGRAPHICSHANDLERITEM_H
|
#define QETGRAPHICSHANDLERITEM_H
|
||||||
|
|
||||||
#include <QGraphicsItem>
|
#include <QGraphicsObject>
|
||||||
#include <QPen>
|
#include <QPen>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -33,8 +33,12 @@
|
|||||||
need to reimplement "sceneEventFilter"
|
need to reimplement "sceneEventFilter"
|
||||||
for create the modification behavior.
|
for create the modification behavior.
|
||||||
*/
|
*/
|
||||||
class QetGraphicsHandlerItem : public QGraphicsItem
|
class QetGraphicsHandlerItem : public QGraphicsObject
|
||||||
{
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
Q_PROPERTY(qreal currentSize READ currentSize WRITE setCurrentSize)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QetGraphicsHandlerItem(qreal size = 10);
|
QetGraphicsHandlerItem(qreal size = 10);
|
||||||
void setSize(qreal size);
|
void setSize(qreal size);
|
||||||
@@ -45,15 +49,24 @@ class QetGraphicsHandlerItem : public QGraphicsItem
|
|||||||
|
|
||||||
void setColor(QColor color);
|
void setColor(QColor color);
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void paint(QPainter *painter,
|
void paint(QPainter *painter,
|
||||||
const QStyleOptionGraphicsItem *option,
|
const QStyleOptionGraphicsItem *option,
|
||||||
QWidget *widget) override;
|
QWidget *widget) override;
|
||||||
|
void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override;
|
||||||
|
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override;
|
||||||
|
|
||||||
|
qreal currentSize() const {return m_current_size;}
|
||||||
|
void setCurrentSize(qreal size);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QRectF m_handler_rect,
|
QRectF m_handler_rect,
|
||||||
m_br;
|
m_br;
|
||||||
qreal m_size;
|
qreal m_current_size;
|
||||||
|
qreal m_original_size;
|
||||||
QColor m_color;
|
QColor m_color;
|
||||||
QPen m_pen;
|
QPen m_pen;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user