File: qgraphicslayout.html

package info (click to toggle)
python-qt4 4.9.3-4
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 34,432 kB
  • sloc: python: 34,126; cpp: 11,938; xml: 290; makefile: 223; php: 27
file content (231 lines) | stat: -rw-r--r-- 18,490 bytes parent folder | download
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html><head><title>QGraphicsLayout Class Reference</title><style>h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm }
a:link { color: #004faf; text-decoration: none }
a:visited { color: #672967; text-decoration: none }
td.postheader { font-family: sans-serif }
tr.address { font-family: sans-serif }
body { background: #ffffff; color: black; }
</style></head><body><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr /><td align="left" valign="top" width="32"><img align="left" border="0" height="32" src="images/rb-logo.png" width="32" /></td><td width="1">&#160;&#160;</td><td class="postheader" valign="center"><a href="index.html"><font color="#004faf">Home</font></a>&#160;&#183; <a href="classes.html"><font color="#004faf">All Classes</font></a>&#160;&#183; <a href="modules.html"><font color="#004faf">Modules</font></a></td></table><h1 align="center">QGraphicsLayout Class Reference<br /><sup><sup>[<a href="qtgui.html">QtGui</a> module]</sup></sup></h1><p>The QGraphicsLayout class provides the base class for all
layouts in Graphics View. <a href="#details">More...</a></p>

<p>Inherits <a href="qgraphicslayoutitem.html">QGraphicsLayoutItem</a>.</p><p>Inherited by <a href="qgraphicsanchorlayout.html">QGraphicsAnchorLayout</a>, <a href="qgraphicsgridlayout.html">QGraphicsGridLayout</a> and <a href="qgraphicslinearlayout.html">QGraphicsLinearLayout</a>.</p><h3>Methods</h3><ul><li><div class="fn" /><b><a href="qgraphicslayout.html#QGraphicsLayout">__init__</a></b> (<i>self</i>, QGraphicsLayoutItem&#160;<i>parent</i>&#160;=&#160;None)</li><li><div class="fn" /><b><a href="qgraphicslayout.html#activate">activate</a></b> (<i>self</i>)</li><li><div class="fn" /><b><a href="qgraphicslayout.html#addChildLayoutItem">addChildLayoutItem</a></b> (<i>self</i>, QGraphicsLayoutItem&#160;<i>layoutItem</i>)</li><li><div class="fn" />int <b><a href="qgraphicslayout.html#count">count</a></b> (<i>self</i>)</li><li><div class="fn" />(float&#160;<i>left</i>, float&#160;<i>top</i>, float&#160;<i>right</i>, float&#160;<i>bottom</i>) <b><a href="qgraphicslayout.html#getContentsMargins">getContentsMargins</a></b> (<i>self</i>)</li><li><div class="fn" /><b><a href="qgraphicslayout.html#invalidate">invalidate</a></b> (<i>self</i>)</li><li><div class="fn" />bool <b><a href="qgraphicslayout.html#isActivated">isActivated</a></b> (<i>self</i>)</li><li><div class="fn" />QGraphicsLayoutItem <b><a href="qgraphicslayout.html#itemAt">itemAt</a></b> (<i>self</i>, int&#160;<i>i</i>)</li><li><div class="fn" /><b><a href="qgraphicslayout.html#removeAt">removeAt</a></b> (<i>self</i>, int&#160;<i>index</i>)</li><li><div class="fn" /><b><a href="qgraphicslayout.html#setContentsMargins">setContentsMargins</a></b> (<i>self</i>, float&#160;<i>left</i>, float&#160;<i>top</i>, float&#160;<i>right</i>, float&#160;<i>bottom</i>)</li><li><div class="fn" /><b><a href="qgraphicslayout.html#updateGeometry">updateGeometry</a></b> (<i>self</i>)</li><li><div class="fn" /><b><a href="qgraphicslayout.html#widgetEvent">widgetEvent</a></b> (<i>self</i>, QEvent&#160;<i>e</i>)</li></ul><h3>Special Methods</h3><ul><li><div class="fn" /> <b><a href="qgraphicslayout.html#__len__">__len__</a></b> (<i>self</i>)</li></ul><a name="details" /><hr /><h2>Detailed Description</h2><p>The QGraphicsLayout class provides the base class for all
layouts in Graphics View.</p>
<p>QGraphicsLayout is an abstract class that defines a virtual API
for arranging <a href="qgraphicswidget.html">QGraphicsWidget</a>
children and other <a href="qgraphicslayoutitem.html">QGraphicsLayoutItem</a> objects for a
<a href="qgraphicswidget.html">QGraphicsWidget</a>. <a href="qgraphicswidget.html">QGraphicsWidget</a> assigns responsibility
to a QGraphicsLayout through <a href="qgraphicswidget.html#layout-prop">QGraphicsWidget.setLayout</a>().
As the widget is resized, the layout will automatically arrange the
widget's children. QGraphicsLayout inherits <a href="qgraphicslayoutitem.html">QGraphicsLayoutItem</a>, so, it can be
managed by any layout, including its own subclasses.</p>
<a id="writing-a-custom-layout" name="writing-a-custom-layout" />
<h3>Writing a Custom Layout</h3>
<p>You can use QGraphicsLayout as a base to write your own custom
layout (e.g., a flowlayout), but it is more common to use one of
its subclasses instead - <a href="qgraphicslinearlayout.html">QGraphicsLinearLayout</a> or <a href="qgraphicsgridlayout.html">QGraphicsGridLayout</a>. When creating a
custom layout, the following functions must be reimplemented as a
bare minimum:</p>
<table class="generic">
<thead>
<tr class="qt-style">
<th>Function</th>
<th>Description</th>
</tr>
</thead>
<tr class="odd" valign="top">
<td><a href="qgraphicslayoutitem.html#setGeometry">QGraphicsLayoutItem.setGeometry</a>()</td>
<td>Notifies you when the geometry of the layout is set. You can
store the geometry in your own layout class in a reimplementation
of this function.</td>
</tr>
<tr class="even" valign="top">
<td><a href="qgraphicslayoutitem.html#sizeHint">QGraphicsLayoutItem.sizeHint</a>()</td>
<td>Returns the layout's size hints.</td>
</tr>
<tr class="odd" valign="top">
<td><a href="qgraphicslayout.html#count">QGraphicsLayout.count</a>()</td>
<td>Returns the number of items in your layout.</td>
</tr>
<tr class="even" valign="top">
<td><a href="qgraphicslayout.html#itemAt">QGraphicsLayout.itemAt</a>()</td>
<td>Returns a pointer to an item in your layout.</td>
</tr>
<tr class="odd" valign="top">
<td><a href="qgraphicslayout.html#removeAt">QGraphicsLayout.removeAt</a>()</td>
<td>Removes an item from your layout without destroying it.</td>
</tr>
</table>
<p>For more details on how to implement each function, refer to the
individual function documentation.</p>
<p>Each layout defines its own API for arranging widgets and layout
items. For example, with a grid layout, you require a row and a
column index with optional row and column spans, alignment,
spacing, and more. A linear layout, however, requires a single row
or column index to position its items. For a grid layout, the order
of insertion does not affect the layout in any way, but for a
linear layout, the order is essential. When writing your own layout
subclass, you are free to choose the API that best suits your
layout.</p>
<p>For adding layout items to the custom layout, the
QGraphicsLayout provides convenience function <a href="qgraphicslayout.html#addChildLayoutItem">addChildLayoutItem</a>().
The function will take care of automatically reparenting graphics
items, if needed.</p>
<a id="activating-the-layout" name="activating-the-layout" />
<h3>Activating the Layout</h3>
<p>When the layout's geometry changes, QGraphicsLayout immediately
rearranges all of its managed items by calling <a href="qgraphicslayoutitem.html#setGeometry">setGeometry</a>() on each
item. This rearrangement is called <i>activating</i> the
layout.</p>
<p>QGraphicsLayout updates its own geometry to match the <a href="qgraphicslayoutitem.html#contentsRect">contentsRect</a>() of the
<a href="qgraphicslayoutitem.html">QGraphicsLayoutItem</a> it is
managing. Thus, it will automatically rearrange all its items when
the widget is resized. QGraphicsLayout caches the sizes of all its
managed items to avoid calling <a href="qgraphicslayoutitem.html#setGeometry">setGeometry</a>() too
often.</p>
<p><b>Note:</b> A QGraphicsLayout will have the same geometry as
the <a href="qgraphicslayoutitem.html#contentsRect">contentsRect</a>() of the
widget (not the layout) it is assigned to.</p>
<a id="activating-the-layout-implicitly" name="activating-the-layout-implicitly" />
<h4>Activating the Layout Implicitly</h4>
<p>The layout can be activated implicitly using one of two ways: by
calling <a href="qgraphicslayout.html#activate">activate</a>() or
by calling <a href="qgraphicslayout.html#invalidate">invalidate</a>(). Calling
<a href="qgraphicslayout.html#activate">activate</a>() activates
the layout immediately. In contrast, calling <a href="qgraphicslayout.html#invalidate">invalidate</a>() is delayed, as
it posts a <a href="qevent.html#Type-enum">LayoutRequest</a> event
to the managed widget. Due to event compression, the <a href="qgraphicslayout.html#activate">activate</a>() will only be called
once after control has returned to the event loop. This is referred
to as <i>invalidating</i> the layout. Invalidating the layout also
invalidates any cached information. Also, the <a href="qgraphicslayout.html#invalidate">invalidate</a>() function is a
virtual function. So, you can invalidate your own cache in a
subclass of QGraphicsLayout by reimplementing this function.</p>
<a id="event-handling" name="event-handling" />
<h3>Event Handling</h3>
<p>QGraphicsLayout listens to events for the widget it manages
through the virtual <a href="qgraphicslayout.html#widgetEvent">widgetEvent</a>() event handler.
When the layout is assigned to a widget, all events delivered to
the widget are first processed by <a href="qgraphicslayout.html#widgetEvent">widgetEvent</a>(). This allows
the layout to be aware of any relevant state changes on the widget
such as visibility changes or layout direction changes.</p>
<a id="margin-handling" name="margin-handling" />
<h3>Margin Handling</h3>
<p>The margins of a QGraphicsLayout can be modified by
reimplementing <a href="qgraphicslayout.html#setContentsMargins">setContentsMargins</a>()
and <a href="qgraphicslayout.html#getContentsMargins">getContentsMargins</a>().</p>
<hr /><h2>Method Documentation</h2><h3 class="fn"><a name="QGraphicsLayout" />QGraphicsLayout.__init__ (<i>self</i>, <a href="qgraphicslayoutitem.html">QGraphicsLayoutItem</a>&#160;<i>parent</i>&#160;=&#160;None)</h3><p>The <i>parent</i> argument, if not None, causes <i>self</i> to be owned by Qt instead of PyQt.</p><p>Contructs a <a href="qgraphicslayout.html">QGraphicsLayout</a>
object.</p>
<p><i>parent</i> is passed to <a href="qgraphicslayoutitem.html">QGraphicsLayoutItem</a>'s constructor
and the <a href="qgraphicslayoutitem.html">QGraphicsLayoutItem</a>'s isLayout
argument is set to <i>true</i>.</p>
<p>If <i>parent</i> is a <a href="qgraphicswidget.html">QGraphicsWidget</a> the layout will be
installed on that widget. (Note that installing a layout will
delete the old one installed.)</p>


<h3 class="fn"><a name="activate" />QGraphicsLayout.activate (<i>self</i>)</h3><p>Activates the layout, causing all items in the layout to be
immediately rearranged. This function is based on calling <a href="qgraphicslayout.html#count">count</a>() and <a href="qgraphicslayout.html#itemAt">itemAt</a>(), and then calling
<a href="qgraphicslayoutitem.html#setGeometry">setGeometry</a>() on
all items sequentially. When activated, the layout will adjust its
geometry to its parent's <a href="qgraphicslayoutitem.html#contentsRect">contentsRect</a>(). The
parent will then invalidate any layout of its own.</p>
<p>If called in sequence or recursively, e.g., by one of the
arranged items in response to being resized, this function will do
nothing.</p>
<p>Note that the layout is free to use geometry caching to optimize
this process. To forcefully invalidate any such cache, you can call
<a href="qgraphicslayout.html#invalidate">invalidate</a>() before
calling activate().</p>
<p><b>See also</b> <a href="qgraphicslayout.html#invalidate">invalidate</a>().</p>


<h3 class="fn"><a name="addChildLayoutItem" />QGraphicsLayout.addChildLayoutItem (<i>self</i>, <a href="qgraphicslayoutitem.html">QGraphicsLayoutItem</a>&#160;<i>layoutItem</i>)</h3><p>The <i>layoutItem</i> argument has it's ownership transferred to Qt.</p><p>This function is a convenience function provided for custom
layouts, and will go through all items in the layout and reparent
their graphics items to the closest <a href="qgraphicswidget.html">QGraphicsWidget</a> ancestor of the
layout.</p>
<p>If <i>layoutItem</i> is already in a different layout, it will
be removed from that layout.</p>
<p>If custom layouts want special behaviour they can ignore to use
this function, and implement their own behaviour.</p>
<p>This function was introduced in Qt 4.6.</p>
<p><b>See also</b> <a href="qgraphicslayoutitem.html#graphicsItem">graphicsItem</a>().</p>


<h3 class="fn"><a name="count" />int QGraphicsLayout.count (<i>self</i>)</h3><p>This method is abstract and should be reimplemented in any sub-class.</p><p>This pure virtual function must be reimplemented in a subclass
of <a href="qgraphicslayout.html">QGraphicsLayout</a> to return the
number of items in the layout.</p>
<p>The subclass is free to decide how to store the items.</p>
<p><b>See also</b> <a href="qgraphicslayout.html#itemAt">itemAt</a>() and <a href="qgraphicslayout.html#removeAt">removeAt</a>().</p>


<h3 class="fn"><a name="getContentsMargins" />(float&#160;<i>left</i>, float&#160;<i>top</i>, float&#160;<i>right</i>, float&#160;<i>bottom</i>) QGraphicsLayout.getContentsMargins (<i>self</i>)</h3><p>Reimplemented from <a href="qgraphicslayoutitem.html#getContentsMargins">QGraphicsLayoutItem.getContentsMargins</a>().</p>


<h3 class="fn"><a name="invalidate" />QGraphicsLayout.invalidate (<i>self</i>)</h3><p>Clears any cached geometry and size hint information in the
layout, and posts a <a href="qevent.html#Type-enum">LayoutRequest</a> event to the managed
parent <a href="qgraphicslayoutitem.html">QGraphicsLayoutItem</a>.</p>
<p><b>See also</b> <a href="qgraphicslayout.html#activate">activate</a>() and <a href="qgraphicslayoutitem.html#setGeometry">setGeometry</a>().</p>


<h3 class="fn"><a name="isActivated" />bool QGraphicsLayout.isActivated (<i>self</i>)</h3><p>Returns true if the layout is currently being activated;
otherwise, returns false. If the layout is being activated, this
means that it is currently in the process of rearranging its items
(i.e., the <a href="qgraphicslayout.html#activate">activate</a>()
function has been called, and has not yet returned).</p>
<p><b>See also</b> <a href="qgraphicslayout.html#activate">activate</a>() and <a href="qgraphicslayout.html#invalidate">invalidate</a>().</p>


<h3 class="fn"><a name="itemAt" /><a href="qgraphicslayoutitem.html">QGraphicsLayoutItem</a> QGraphicsLayout.itemAt (<i>self</i>, int&#160;<i>i</i>)</h3><p>This method is abstract and should be reimplemented in any sub-class.</p><p>This pure virtual function must be reimplemented in a subclass
of <a href="qgraphicslayout.html">QGraphicsLayout</a> to return a
pointer to the item at index <i>i</i>. The reimplementation can
assume that <i>i</i> is valid (i.e., it respects the value of
<a href="qgraphicslayout.html#count">count</a>()). Together with
<a href="qgraphicslayout.html#count">count</a>(), it is provided as
a means of iterating over all items in a layout.</p>
<p>The subclass is free to decide how to store the items, and the
visual arrangement does not have to be reflected through this
function.</p>
<p><b>See also</b> <a href="qgraphicslayout.html#count">count</a>()
and <a href="qgraphicslayout.html#removeAt">removeAt</a>().</p>


<h3 class="fn"><a name="removeAt" />QGraphicsLayout.removeAt (<i>self</i>, int&#160;<i>index</i>)</h3><p>This method is abstract and should be reimplemented in any sub-class.</p><p>This pure virtual function must be reimplemented in a subclass
of <a href="qgraphicslayout.html">QGraphicsLayout</a> to remove the
item at <i>index</i>. The reimplementation can assume that
<i>index</i> is valid (i.e., it respects the value of <a href="qgraphicslayout.html#count">count</a>()).</p>
<p>The implementation must ensure that the <a href="qgraphicslayoutitem.html#parentLayoutItem">parentLayoutItem</a>()
of the removed item does not point to this layout, since the item
is considered to be removed from the layout hierarchy.</p>
<p>If the layout is to be reused between applications, we recommend
that the layout deletes the item, but the graphics view framework
does not depend on this.</p>
<p>The subclass is free to decide how to store the items.</p>
<p><b>See also</b> <a href="qgraphicslayout.html#itemAt">itemAt</a>() and <a href="qgraphicslayout.html#count">count</a>().</p>


<h3 class="fn"><a name="setContentsMargins" />QGraphicsLayout.setContentsMargins (<i>self</i>, float&#160;<i>left</i>, float&#160;<i>top</i>, float&#160;<i>right</i>, float&#160;<i>bottom</i>)</h3><p>Sets the contents margins to <i>left</i>, <i>top</i>,
<i>right</i> and <i>bottom</i>. The default contents margins for
toplevel layouts are style dependent (by querying the pixelMetric
for <a href="qstyle.html#PixelMetric-enum">QStyle.PM_LayoutLeftMargin</a>,
<a href="qstyle.html#PixelMetric-enum">QStyle.PM_LayoutTopMargin</a>,
<a href="qstyle.html#PixelMetric-enum">QStyle.PM_LayoutRightMargin</a> and
<a href="qstyle.html#PixelMetric-enum">QStyle.PM_LayoutBottomMargin</a>).</p>
<p>For sublayouts the default margins are 0.</p>
<p>Changing the contents margins automatically invalidates the
layout.</p>
<p><b>See also</b> <a href="qgraphicslayout.html#invalidate">invalidate</a>().</p>


<h3 class="fn"><a name="updateGeometry" />QGraphicsLayout.updateGeometry (<i>self</i>)</h3><p>Reimplemented from <a href="qgraphicslayoutitem.html#updateGeometry">QGraphicsLayoutItem.updateGeometry</a>().</p>


<h3 class="fn"><a name="widgetEvent" />QGraphicsLayout.widgetEvent (<i>self</i>, <a href="qevent.html">QEvent</a>&#160;<i>e</i>)</h3><p>This virtual event handler receives all events for the managed
widget. <a href="qgraphicslayout.html">QGraphicsLayout</a> uses
this event handler to listen for layout related events such as
geometry changes, layout changes or layout direction changes.</p>
<p><i>e</i> is a pointer to the event.</p>
<p>You can reimplement this event handler to track similar events
for your own custom layout.</p>
<p><b>See also</b> <a href="qgraphicswidget.html#event">QGraphicsWidget.event</a>() and
<a href="qgraphicsitem.html#sceneEvent">QGraphicsItem.sceneEvent</a>().</p>
<h3 class="fn"><a name="__len__" /> QGraphicsLayout.__len__ (<i>self</i>)</h3><address><hr /><div align="center"><table border="0" cellspacing="0" width="100%"><tr class="address"><td align="left" width="25%">PyQt&#160;4.9.3 for X11</td><td align="center" width="50%">Copyright &#169; <a href="http://www.riverbankcomputing.com">Riverbank&#160;Computing&#160;Ltd</a> and <a href="http://www.qtsoftware.com">Nokia</a> 2012</td><td align="right" width="25%">Qt&#160;4.8.2</td></tr></table></div></address></body></html>