source: trunk/src/gui/kernel/qsizepolicy.qdoc@ 642

Last change on this file since 642 was 561, checked in by Dmitry A. Kuminov, 15 years ago

trunk: Merged in qt 4.6.1 sources.

  • Property svn:eol-style set to native
File size: 16.0 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation ([email protected])
6**
7** This file is part of the documentation of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and Nokia.
15**
16** GNU Lesser General Public License Usage
17** Alternatively, this file may be used under the terms of the GNU Lesser
18** General Public License version 2.1 as published by the Free Software
19** Foundation and appearing in the file LICENSE.LGPL included in the
20** packaging of this file. Please review the following information to
21** ensure the GNU Lesser General Public License version 2.1 requirements
22** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23**
24** In addition, as a special exception, Nokia gives you certain additional
25** rights. These rights are described in the Nokia Qt LGPL Exception
26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you have questions regarding the use of this file, please contact
37** Nokia at [email protected].
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42/*!
43 \class QSizePolicy
44 \brief The QSizePolicy class is a layout attribute describing horizontal
45 and vertical resizing policy.
46
47 \ingroup geomanagement
48
49 The size policy of a widget is an expression of its willingness to
50 be resized in various ways, and affects how the widget is treated
51 by the \l{Layout Management}{layout engine}. Each widget returns a
52 QSizePolicy that describes the horizontal and vertical resizing
53 policy it prefers when being laid out. You can change this for
54 a specific widget by changing its QWidget::sizePolicy property.
55
56 QSizePolicy contains two independent QSizePolicy::Policy values
57 and two stretch factors; one describes the widgets's horizontal
58 size policy, and the other describes its vertical size policy. It
59 also contains a flag to indicate whether the height and width of
60 its preferred size are related.
61
62 The horizontal and vertical policies can be set in the
63 constructor, and altered using the setHorizontalPolicy() and
64 setVerticalPolicy() functions. The stretch factors can be set
65 using the setHorizontalStretch() and setVerticalStretch()
66 functions. The flag indicating whether the widget's
67 \l{QWidget::sizeHint()}{sizeHint()} is width-dependent (such as a
68 menu bar or a word-wrapping label) can be set using the
69 setHeightForWidth() function.
70
71 The current size policies and stretch factors be retrieved using
72 the horizontalPolicy(), verticalPolicy(), horizontalStretch() and
73 verticalStretch() functions. Alternatively, use the transpose()
74 function to swap the horizontal and vertical policies and
75 stretches. The hasHeightForWidth() function returns the current
76 status of the flag indicating the size hint dependencies.
77
78 Use the expandingDirections() function to determine whether the
79 associated widget can make use of more space than its
80 \l{QWidget::sizeHint()}{sizeHint()} function indicates, as well as
81 find out in which directions it can expand.
82
83 Finally, the QSizePolicy class provides operators comparing this
84 size policy to a given policy, as well as a QVariant operator
85 storing this QSizePolicy as a QVariant object.
86
87 \sa QSize, QWidget::sizeHint(), QWidget::sizePolicy,
88 QLayoutItem::sizeHint()
89*/
90
91/*!
92 \enum QSizePolicy::PolicyFlag
93
94 These flags are combined together to form the various \l{Policy}
95 values:
96
97 \value GrowFlag The widget can grow beyond its size hint if necessary.
98 \value ExpandFlag The widget should get as much space as possible.
99 \value ShrinkFlag The widget can shrink below its size hint if necessary.
100 \value IgnoreFlag The widget's size hint is ignored. The widget will get
101 as much space as possible.
102
103 \sa Policy
104*/
105
106/*!
107 \enum QSizePolicy::Policy
108
109 This enum describes the various per-dimension sizing types used
110 when constructing a QSizePolicy.
111
112 \value Fixed The QWidget::sizeHint() is the only acceptable
113 alternative, so the widget can never grow or shrink (e.g. the
114 vertical direction of a push button).
115
116 \value Minimum The sizeHint() is minimal, and sufficient. The
117 widget can be expanded, but there is no advantage to it being
118 larger (e.g. the horizontal direction of a push button).
119 It cannot be smaller than the size provided by sizeHint().
120
121 \value Maximum The sizeHint() is a maximum. The widget can be
122 shrunk any amount without detriment if other widgets need the
123 space (e.g. a separator line).
124 It cannot be larger than the size provided by sizeHint().
125
126 \value Preferred The sizeHint() is best, but the widget can be
127 shrunk and still be useful. The widget can be expanded, but there
128 is no advantage to it being larger than sizeHint() (the default
129 QWidget policy).
130
131 \value Expanding The sizeHint() is a sensible size, but the
132 widget can be shrunk and still be useful. The widget can make use
133 of extra space, so it should get as much space as possible (e.g.
134 the horizontal direction of a horizontal slider).
135
136 \value MinimumExpanding The sizeHint() is minimal, and sufficient.
137 The widget can make use of extra space, so it should get as much
138 space as possible (e.g. the horizontal direction of a horizontal
139 slider).
140
141 \value Ignored The sizeHint() is ignored. The widget will get as
142 much space as possible.
143
144 \sa PolicyFlag, setHorizontalPolicy(), setVerticalPolicy()
145*/
146
147/*!
148 \fn QSizePolicy::QSizePolicy()
149
150 Constructs a QSizePolicy object with \l Fixed as its horizontal
151 and vertical policies.
152
153 The policies can be altered using the setHorizontalPolicy() and
154 setVerticalPolicy() functions. Use the setHeightForWidth()
155 function if the preferred height of the widget is dependent on the
156 width of the widget (for example, a QLabel with line wrapping).
157
158 \sa setHorizontalStretch(), setVerticalStretch()
159*/
160
161/*!
162 \fn QSizePolicy::QSizePolicy(Policy horizontal, Policy vertical)
163
164 Constructs a QSizePolicy object with the given \a horizontal and
165 \a vertical policies, and DefaultType as the control type.
166
167 Use setHeightForWidth() if the preferred height of the widget is
168 dependent on the width of the widget (for example, a QLabel with
169 line wrapping).
170
171 \sa setHorizontalStretch(), setVerticalStretch()
172*/
173
174/*!
175 \fn QSizePolicy::QSizePolicy(Policy horizontal, Policy vertical, ControlType type)
176 \since 4.3
177
178 Constructs a QSizePolicy object with the given \a horizontal and
179 \a vertical policies, and the specified control \a type.
180
181 Use setHeightForWidth() if the preferred height of the widget is
182 dependent on the width of the widget (for example, a QLabel with
183 line wrapping).
184
185 \sa setHorizontalStretch(), setVerticalStretch(), controlType()
186*/
187
188/*!
189 \fn QSizePolicy::Policy QSizePolicy::horizontalPolicy() const
190
191 Returns the horizontal component of the size policy.
192
193 \sa setHorizontalPolicy(), verticalPolicy(), horizontalStretch()
194*/
195
196/*!
197 \fn QSizePolicy::Policy QSizePolicy::verticalPolicy() const
198
199 Returns the vertical component of the size policy.
200
201 \sa setVerticalPolicy(), horizontalPolicy(), verticalStretch()
202*/
203
204/*!
205 \fn void QSizePolicy::setHorizontalPolicy(Policy policy)
206
207 Sets the horizontal component to the given \a policy.
208
209 \sa horizontalPolicy(), setVerticalPolicy(), setHorizontalStretch()
210*/
211
212/*!
213 \fn void QSizePolicy::setVerticalPolicy(Policy policy)
214
215 Sets the vertical component to the given \a policy.
216
217 \sa verticalPolicy(), setHorizontalPolicy(), setVerticalStretch()
218*/
219
220/*!
221 \fn Qt::Orientations QSizePolicy::expandingDirections() const
222
223 Returns whether a widget can make use of more space than the
224 QWidget::sizeHint() function indicates.
225
226 A value of Qt::Horizontal or Qt::Vertical means that the widget
227 can grow horizontally or vertically (i.e., the horizontal or
228 vertical policy is \l Expanding or \l MinimumExpanding), whereas
229 Qt::Horizontal | Qt::Vertical means that it can grow in both
230 dimensions.
231
232 \sa horizontalPolicy(), verticalPolicy()
233*/
234
235/*!
236 \fn ControlType QSizePolicy::controlType() const
237 \since 4.3
238
239 Returns the control type associated with the widget for which
240 this size policy applies.
241*/
242
243/*!
244 \fn void QSizePolicy::setControlType(ControlType type)
245 \since 4.3
246
247 Sets the control type associated with the widget for which this
248 size policy applies to \a type.
249
250 The control type specifies the type of the widget for which this
251 size policy applies. It is used by some styles, notably
252 QMacStyle, to insert proper spacing between widgets. For example,
253 the Mac OS X Aqua guidelines specify that push buttons should be
254 separated by 12 pixels, whereas vertically stacked radio buttons
255 only require 6 pixels.
256
257 \sa QStyle::layoutSpacing()
258*/
259
260/*!
261 \fn void QSizePolicy::setHeightForWidth(bool dependent)
262
263 Sets the flag determining whether the widget's preferred height
264 depends on its width, to \a dependent.
265
266 \sa hasHeightForWidth()
267*/
268
269/*!
270 \fn bool QSizePolicy::hasHeightForWidth() const
271
272 Returns true if the widget's preferred height depends on its
273 width; otherwise returns false.
274
275 \sa setHeightForWidth()
276*/
277
278/*!
279 \fn bool QSizePolicy::operator==(const QSizePolicy &other) const
280
281 Returns true if this policy is equal to \a other; otherwise
282 returns false.
283
284 \sa operator!=()
285*/
286
287/*!
288 \fn bool QSizePolicy::operator!=(const QSizePolicy &other) const
289
290 Returns true if this policy is different from \a other; otherwise
291 returns false.
292
293 \sa operator==()
294*/
295
296/*!
297 \fn int QSizePolicy::horizontalStretch() const
298
299 Returns the horizontal stretch factor of the size policy.
300
301 \sa setHorizontalStretch(), verticalStretch(), horizontalPolicy()
302*/
303
304/*!
305 \fn int QSizePolicy::verticalStretch() const
306
307 Returns the vertical stretch factor of the size policy.
308
309 \sa setVerticalStretch(), horizontalStretch(), verticalPolicy()
310*/
311
312/*!
313 \fn void QSizePolicy::setHorizontalStretch(uchar stretchFactor)
314
315 Sets the horizontal stretch factor of the size policy to the given \a
316 stretchFactor.
317
318 \sa horizontalStretch(), setVerticalStretch(), setHorizontalPolicy()
319*/
320
321/*!
322 \fn void QSizePolicy::setVerticalStretch(uchar stretchFactor)
323
324 Sets the vertical stretch factor of the size policy to the given
325 \a stretchFactor.
326
327 \sa verticalStretch(), setHorizontalStretch(), setVerticalPolicy()
328*/
329
330/*!
331 \fn void QSizePolicy::transpose()
332
333 Swaps the horizontal and vertical policies and stretches.
334*/
335
336/*!
337 \enum QSizePolicy::ControlType
338 \since 4.3
339
340 This enum specifies the different types of widgets in terms of
341 layout interaction:
342
343 \value DefaultType The default type, when none is specified.
344 \value ButtonBox A QDialogButtonBox instance.
345 \value CheckBox A QCheckBox instance.
346 \value ComboBox A QComboBox instance.
347 \value Frame A QFrame instance.
348 \value GroupBox A QGroupBox instance.
349 \value Label A QLabel instance.
350 \value Line A QFrame instance with QFrame::HLine or QFrame::VLine.
351 \value LineEdit A QLineEdit instance.
352 \value PushButton A QPushButton instance.
353 \value RadioButton A QRadioButton instance.
354 \value Slider A QAbstractSlider instance.
355 \value SpinBox A QAbstractSpinBox instance.
356 \value TabWidget A QTabWidget instance.
357 \value ToolButton A QToolButton instance.
358
359 \sa setControlType(), controlType()
360*/
361
362#ifdef QT3_SUPPORT
363/*!
364 \typedef QSizePolicy::SizeType
365 \compat
366
367 Use the QSizePolicy::Policy enum instead.
368*/
369
370/*!
371 \enum QSizePolicy::ExpandData
372 \compat
373
374 Use the Qt::Orientations enum instead.
375
376 \value NoDirection Use 0 instead.
377 \value Horizontally Use Qt::Horizontal instead.
378 \value Vertically Use Qt::Vertical instead.
379 \value BothDirections Use Qt::Horizontal | Qt::Vertical instead.
380*/
381
382/*!
383 \fn bool QSizePolicy::mayShrinkHorizontally() const
384
385 Use the horizontalPolicy() function combined with the
386 QSizePolicy::PolicyFlag enum instead.
387
388 \oldcode
389 bool policy = mayShrinkHorizontally();
390 \newcode
391 bool policy = horizontalPolicy() & QSizePolicy::ShrinkFlag;
392 \endcode
393*/
394
395/*!
396 \fn bool QSizePolicy::mayShrinkVertically() const
397
398 Use the verticalPolicy() function combined with the
399 QSizePolicy::PolicyFlag enum instead.
400
401 \oldcode
402 bool policy = mayShrinkVertically();
403 \newcode
404 bool policy = verticalPolicy() & QSizePolicy::ShrinkFlag;
405 \endcode
406*/
407
408/*!
409 \fn bool QSizePolicy::mayGrowHorizontally() const
410
411 Use the horizontalPolicy() function combined with the
412 QSizePolicy::PolicyFlag enum instead.
413
414 \oldcode
415 bool policy = mayGrowHorizontally();
416 \newcode
417 bool policy = horizontalPolicy() & QSizePolicy::GrowFlag;
418 \endcode
419*/
420
421/*!
422 \fn bool QSizePolicy::mayGrowVertically() const
423
424 Use the verticalPolicy() function combined with the
425 QSizePolicy::PolicyFlag enum instead.
426
427 \oldcode
428 bool policy = mayGrowVertically();
429 \newcode
430 bool policy = verticalPolicy() & QSizePolicy::GrowFlag;
431 \endcode
432*/
433
434/*!
435 \fn Qt::QSizePolicy::Orientations QSizePolicy::expanding() const
436
437 Use expandingDirections() instead.
438*/
439
440/*!
441 \fn QSizePolicy::QSizePolicy(Policy horizontal, Policy vertical, bool dependent)
442
443 Use the QSizePolicy() constructor and the setHeightForWidth()
444 function instead.
445
446 \oldcode
447 QSizePolicy *policy = new QSizePolicy(horizontal, vertical, dependent);
448 \newcode
449 QSizePolicy *policy = new QSizePolicy(horizontal, vertical);
450 policy->setHeightForWidth(dependent);
451 \endcode
452*/
453
454/*!
455 \fn QSizePolicy::QSizePolicy(Policy horizontal, Policy vertical, uchar horizontalStretch,
456 uchar verticalStretch, bool dependent)
457
458 Use the QSizePolicy() constructor and call the
459 setHorizontalStretch(), setVerticalStretch(), and
460 setHeightForWidth() functions instead.
461
462 \oldcode
463 QSizePolicy *policy = new QSizePolicy(horizontal, vertical,
464 horizontalStretch, verticalStretch,
465 dependent);
466 \newcode
467 QSizePolicy *policy = new QSizePolicy(horizontal, vertical);
468 policy->setHorizontalStretch(horizontalStretch);
469 policy->setVerticalStretch(verticalStretch);
470 policy->setHeightForWidth(dependent);
471 \endcode
472*/
473
474/*!
475 \fn QSizePolicy::Policy QSizePolicy::horData() const
476
477 Use horizontalPolicy() instead.
478*/
479
480/*!
481 \fn QSizePolicy::Policy QSizePolicy::verData() const
482
483 Use verticalPolicy() instead.
484*/
485
486/*!
487 \fn void QSizePolicy::setHorData(Policy policy)
488
489 Use setHorizontalPolicy() instead.
490*/
491
492/*!
493 \fn void QSizePolicy::setVerData(Policy policy)
494
495 Use setVerticalPolicy() instead.
496*/
497
498/*!
499 \fn uint QSizePolicy::horStretch() const
500
501 Use horizontalStretch() instead.
502*/
503
504/*!
505 \fn uint QSizePolicy::verStretch() const
506
507 Use verticalStretch() instead.
508*/
509
510/*!
511 \fn void QSizePolicy::setHorStretch(uchar stretch)
512
513 Use setHorizontalStretch() instead.
514*/
515
516/*!
517 \fn void QSizePolicy::setVerStretch(uchar stretch)
518
519 Use setVerticalStretch() instead.
520*/
521#endif
Note: See TracBrowser for help on using the repository browser.