diff options
Diffstat (limited to 'doc/src/declarative/anchor-layout.qdoc')
-rw-r--r-- | doc/src/declarative/anchor-layout.qdoc | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/doc/src/declarative/anchor-layout.qdoc b/doc/src/declarative/anchor-layout.qdoc new file mode 100644 index 0000000..9647a72 --- /dev/null +++ b/doc/src/declarative/anchor-layout.qdoc @@ -0,0 +1,68 @@ +/*! +\page anchor-layout.html +\target anchor-layout +\title Anchor-based Layout + +In additional to the more traditional Fx layouts \l {xmlGridLayout}{GridLayout}, \l {xmlHorizontalLayout}{HorizontalLayout}, and \l {xmlVerticalLayout}{VerticalLayout}, QML also provides a way to layout items using the concept of anchors. Each visual Fx item can be thought of as having a set of 6 invisible "anchor lines": \e left, \e horizontalCenter, \e right, \e top, \e verticalCenter, and \e bottom. + +\image edges_qml.png + +The Fx anchoring system allows you to define relationships between the anchor lines of different items. For example, you can write: + +\code +<Rect id="rect1" .../> +<Rect id="rect2" anchors.left="{rect1.right}" .../> +\endcode + +In this case, the left edge of \e rect2 is bound to the right edge of rect1, producing the following: + +\image edge1.png + +The anchoring system also allows you to specify margins and offsets. Margins specify the amount of empty space to leave to the outside of an item, while offsets allow you to manipulate positioning using the center anchor lines. Note that margins specified using the anchor layout system only have meaning for anchors; they won't have any effect when using other layouts or absolute positioning. + +\image margins_qml.png + +The following example specifies a left margin: + +\code +<Rect id="rect1" .../> +<Rect id="rect2" anchors.left="{rect1.right}" anchors.leftMargin="5".../> +\endcode + +In this case, a margin of 5 pixels is reserved to the left of \e rect2, producing the following: + +\image edge2.png + +You can specify multiple anchors. For example: + +\code +<Rect id="rect1" .../> +<Rect id="rect2" anchors.left="{rect1.right}" anchors.top="{rect1.bottom}".../> +\endcode + +\image edge3.png + +By specifying multiple horizontal or vertical anchors you can control the size of an item. For example: + +\code +<Rect id="rect1" x="0" .../> +<Rect id="rect2" anchors.left="{rect1.right}" anchors.right="{rect3.left}".../> +<Rect id="rect3" x="150" .../> +\endcode + +\image edge4.png + +\section1 Limitations + +For performance reasons, you can only anchor an item to its siblings and direct parent. For example, the following anchor would be considered invalid and would produce a warning: + +\code +<Item id="group1"> + <Rect id="rect1" .../> +</Item> +<Item id="group2"> + <Rect id="rect2" anchors.left="{rect1.right}".../> <!-- invalid anchor! --> +</Item> +\endcode + +*/ |