-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCreateHandler.cpp
More file actions
48 lines (40 loc) · 1.06 KB
/
CreateHandler.cpp
File metadata and controls
48 lines (40 loc) · 1.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "CreateHandler.h"
#include "SignalerGraphicsView.h"
sgv::CreateHandler::CreateHandler(SignalerGraphicsView& a_view)
: m_view(a_view)
{
setParent(&m_view);
}
void sgv::CreateHandler::mousePressEvent(const QMouseEvent* a_event)
{
QPointF pos = m_view.scenePosition(a_event);
QGraphicsItem* item = nullptr;
if (m_view.scene() != nullptr)
item = m_view.scene()->itemAt(pos.toPoint(), m_view.transform());
m_clicked_on_item = (item != nullptr);
}
void sgv::CreateHandler::mouseReleaseEvent(const QMouseEvent* a_event)
{
bool clicked = m_clicked_on_item;
m_clicked_on_item = false;
if (clicked)
return;
if (a_event->button() != Qt::LeftButton ||
m_view.rubberBandRect().isValid() )
return;
QPointF pos = m_view.scenePosition(a_event);
QGraphicsItem* item = nullptr;
if (m_view.scene() != nullptr)
item = m_view.scene()->itemAt(pos, m_view.transform());
if (item != nullptr)
return;
switch(a_event->modifiers())
{
case Qt::NoModifier:
emit m_view.createItem(pos);
break;
case Qt::ControlModifier:
emit m_view.copyItem(pos);
break;
}
}