-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathphotoscene.cpp
80 lines (70 loc) · 1.66 KB
/
photoscene.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include "photoscene.h"
#include <QGraphicsItem>
PhotoScene::PhotoScene(QWidget *parent) : QGraphicsScene(parent)
{
}
PhotoScene::~PhotoScene()
{
}
void PhotoScene::AdjustSceneSize()
{
QList<QGraphicsItem*> list = items();
int posX = 0;
int posY = 0;
for(int i = 0; i < list.size(); i++)
{
QGraphicsItem* item = list[i];
int itemPosX = item->sceneBoundingRect().x() + item->sceneBoundingRect().width() ;
int itemPosY = item->sceneBoundingRect().y() + item->sceneBoundingRect().height();
if(itemPosX > posX)
posX = itemPosX;
if(itemPosY > posY)
posY = itemPosY;
}
if(posX < m_minSize.width())
posX = m_minSize.width();
if(posY < m_minSize.height())
posY = m_minSize.height();
setSceneRect(0, 0, posX, posY);
}
void PhotoScene::SetMinimumSize(const QSize &size)
{
m_minSize = size;
}
QGraphicsItem *PhotoScene::GetSelected()
{
QList<QGraphicsItem*> list = selectedItems();
if(list.size() <= 0)
return nullptr;
else
return list.front();
}
void PhotoScene::Clear()
{
auto list = items();
for(int i = 0; i < list.size(); i++)
{
QGraphicsItem* pItem = list[i];
removeItem(pItem);
delete pItem;
pItem = nullptr;
}
AdjustSceneSize();
}
void PhotoScene::Multiplechoice(QGraphicsItem *pItem)
{
auto list = selectedItems();
for(int i = 0; i < list.size(); i++)
{
if(list[i] != pItem)
list[i]->setSelected(false);
}
}
void PhotoScene::SelectAll(bool b)
{
auto list = items();
for(int i = 0; i < list.size(); i++)
{
list[i]->setSelected(b);
}
}