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
81
82
83
|
#include <QGraphicsWidget>
#include "qgraphicsanchorlayout.h"
// DEBUG
#include "qgraphicsanchorlayout_p.h"
static QGraphicsWidget *createItem(const QSizeF &minimum = QSizeF(100.0, 100.0),
const QSizeF &preferred = QSize(150.0, 100.0),
const QSizeF &maximum = QSizeF(200.0, 100.0))
{
QGraphicsWidget *w = new QGraphicsWidget;
w->setMinimumSize(minimum);
w->setPreferredSize(preferred);
w->setMaximumSize(maximum);
return w;
}
int main(int argc, char **argv)
{
Q_UNUSED(argc);
Q_UNUSED(argv);
QGraphicsWidget *a = createItem(QSizeF(50.0, 100.0),
QSizeF(70.0, 100.0),
QSizeF(100.0, 200.0));
a->setData(0, "A");
QGraphicsWidget *b = createItem(QSizeF(10.0, 100.0),
QSizeF(20.0, 100.0),
QSizeF(40.0, 200.0));
b->setData(0, "B");
QGraphicsWidget *c = createItem(QSizeF(50.0, 100.0),
QSizeF(70.0, 100.0),
QSizeF(100.0, 200.0));
c->setData(0, "C");
QGraphicsAnchorLayout *l = new QGraphicsAnchorLayout;
l->anchor(l, QGraphicsAnchorLayout::Top, a, QGraphicsAnchorLayout::Top);
l->anchor(a, QGraphicsAnchorLayout::Bottom, b, QGraphicsAnchorLayout::Top);
l->anchor(b, QGraphicsAnchorLayout::Bottom, c, QGraphicsAnchorLayout::Top);
l->anchor(c, QGraphicsAnchorLayout::Bottom, l, QGraphicsAnchorLayout::Bottom);
l->anchor(l, QGraphicsAnchorLayout::Left, a, QGraphicsAnchorLayout::Left);
l->anchor(a, QGraphicsAnchorLayout::Right, b, QGraphicsAnchorLayout::Right);
l->anchor(b, QGraphicsAnchorLayout::Left, c, QGraphicsAnchorLayout::Left);
l->anchor(c, QGraphicsAnchorLayout::Right, l, QGraphicsAnchorLayout::Right);
l->dumpGraph();
QSizeF layoutMinimumSize = l->effectiveSizeHint(Qt::MinimumSize);
QSizeF layoutMaximumSize = l->effectiveSizeHint(Qt::MaximumSize);
QSizeF layoutPreferredSize = l->effectiveSizeHint(Qt::PreferredSize);
qWarning() << "Layout Min/Pref/Max: " << layoutMinimumSize
<< " " << layoutPreferredSize
<< " " << layoutMaximumSize;
qWarning() << "\nSetting minimum size";
l->setGeometry(QRectF(QPointF(0,0), layoutMinimumSize));
qWarning() << "A: " << a->geometry();
qWarning() << "B: " << b->geometry();
qWarning() << "C: " << c->geometry();
qWarning() << "\nSetting maximum size";
l->setGeometry(QRectF(QPointF(0,0), layoutMaximumSize));
qWarning() << "A: " << a->geometry();
qWarning() << "B: " << b->geometry();
qWarning() << "C: " << c->geometry();
qWarning() << "\nSetting size 85.0";
l->setGeometry(QRectF(QPointF(0,0), QSizeF(85.0, 200.0)));
qWarning() << "A: " << a->geometry();
qWarning() << "B: " << b->geometry();
qWarning() << "C: " << c->geometry();
return 0;
}
|