added basic ghost functionality

This commit is contained in:
itsmattkc
2019-08-01 09:07:35 -07:00
parent 22d8bf8b59
commit 1ac93b804c
2 changed files with 40 additions and 1 deletions
@@ -21,12 +21,15 @@
#include "timelineviewclipitem.h"
#include <QBrush>
#include <QGraphicsScene>
#include <QGraphicsSceneMouseEvent>
#include <QPainter>
#include <QStyleOptionGraphicsItem>
TimelineViewClipItem::TimelineViewClipItem(QGraphicsItem* parent) :
QGraphicsRectItem(parent),
clip_(nullptr)
clip_(nullptr),
ghost_(nullptr)
{
setBrush(Qt::white);
setFlag(QGraphicsItem::ItemIsSelectable, true);
@@ -61,3 +64,32 @@ void TimelineViewClipItem::paint(QPainter *painter, const QStyleOptionGraphicsIt
painter->drawLine(QPointF(rect().left(), rect().bottom() - 1), QPointF(rect().right(), rect().bottom() - 1));
painter->drawLine(QPointF(rect().right(), rect().bottom() - 1), QPointF(rect().right(), rect().top()));
}
void TimelineViewClipItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
QGraphicsRectItem::mousePressEvent(event);
ghost_ = new TimelineViewGhostItem();
ghost_->setRect(rect());
scene()->addItem(ghost_);
}
void TimelineViewClipItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
QGraphicsRectItem::mouseMoveEvent(event);
if (ghost_ != nullptr) {
ghost_->setPos(event->scenePos());
}
}
void TimelineViewClipItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
QGraphicsRectItem::mouseReleaseEvent(event);
if (ghost_ != nullptr) {
scene()->removeItem(ghost_);
delete ghost_;
ghost_ = nullptr;
}
}
@@ -24,6 +24,7 @@
#include <QGraphicsRectItem>
#include "node/block/clip/clip.h"
#include "timelineviewghostitem.h"
class TimelineViewClipItem : public QGraphicsRectItem
{
@@ -35,8 +36,14 @@ public:
protected:
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override;
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
private:
ClipBlock* clip_;
TimelineViewGhostItem* ghost_;
};
#endif // TIMELINEVIEWCLIPITEM_H