-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathelementlist.cpp
55 lines (48 loc) · 1.45 KB
/
elementlist.cpp
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
49
50
51
52
53
54
55
#include "elementlist.h"
#include "element.h"
#include "emptyitemdelegate.h"
LDA_BEGIN_NAMESPACE
ElementList::ElementList(QWidget *parent) : QListWidget(parent)
{
// this->setItemDelegate(new EmptyItemDelegate());
this->setAcceptDrops(true);
this->setDragDropMode(QAbstractItemView::InternalMove);
this->setDragEnabled(true);
this->setSelectionMode(QAbstractItemView::SingleSelection);
}
ElementList::~ElementList()
{
delete m_radius;
this->QListWidget::~QListWidget();
}
void ElementList::startDrag(Qt::DropActions supportedActions)
{
QDrag *drag = new QDrag(this);
drag->setMimeData(model()->mimeData(selectedIndexes()));
QPixmap pixmap(viewport()->visibleRegion().boundingRect().size());
pixmap.fill(Qt::transparent);
QPainter painter(&pixmap);
for (QModelIndex index: selectedIndexes()) {
painter.drawPixmap(visualRect(index), viewport()->grab(visualRect(index)));
}
drag->setPixmap(pixmap);
drag->setHotSpot(viewport()->mapFromGlobal(QCursor::pos()));
drag->exec(supportedActions, Qt::MoveAction);
}
void ElementList::setRadius(int r)
{
m_radius = new int(r);
}
void ElementList::addElement(Element *e)
{
e->rad = this->m_radius;
QListWidgetItem* listItem = new QListWidgetItem;
listItem->setSizeHint(e->sizeHint());
this->addItem(listItem);
this->setItemWidget(listItem, e);
}
void ElementList::setRadiusOnElement(Element *e, int *r)
{
e->rad = r;
}
LDA_END_NAMESPACE