[Qt-qml] Layout question

Bo Thorsen bo at fioniasoftware.dk
Tue Sep 20 10:05:17 CEST 2011


Den 20-09-2011 09:51, Pris Matic skrev:
> I think what Bo meant was that you can wrap each button by an Item
> component:

No, I actually meant the exact opposite way :)

Item {
   anchors.centerIn: parent

   Column {
     Button {
     ...
   }
}

This is a generic pattern in QML. When you want to center something, put 
an item around it and place that item in the center of the parent.

The item will resize to the contents automatically, so you don't need 
any anchors on the item, column or buttons.

Bo.

> import QtQuick 1.0
>
> Column
> {
> height: 300;
> width: 100;
>
> Item
> {
> height: parent.height/3;
> width: 100;
> Rectangle
> {
> id: rect1;
> height: 40;
> width: 100;
> color: "blue";
> anchors.verticalCenter: parent.verticalCenter;
> }
> }
> Item
> {
> height: parent.height/3;
> width: 100;
> Rectangle
> {
> id: rect2;
> height: 40;
> width: 100;
> color: "blue";
> anchors.verticalCenter: parent.verticalCenter;
> }
> }
> Item
> {
> height: parent.height/3;
> width: 100;
> Rectangle
> {
> id: rect3;
> height: 40;
> width: 100;
> color: "blue";
> anchors.verticalCenter: parent.verticalCenter;
> }
> }
> }
>
> -Pris
>
> On Tue, Sep 20, 2011 at 2:52 AM, John Temples <qt-qml at xargs.com
> <mailto:qt-qml at xargs.com>> wrote:
>
>     Bo,
>
>     On Tue, 20 Sep 2011, Bo Thorsen wrote:
>
>      > Den 20-09-2011 08:04, John Temples skrev:
>      >> Say I have a Column that contains three buttons.  Is there a way to
>      >> have the three buttons be equally spaced within the Column, and
>     remain
>      >> equally spaced as the Column's height changes?  The buttons
>     shouldn't
>      >> resize as the Column changes size.
>      >
>      > The easiest way to do this is with an item between the buttons
>     and the
>      > column:
>      >
>      > Item {
>      >   anchors.centerIn: parent
>      >
>      >   // buttons here...
>      > }
>
>     I tried this:
>
>           Column {
>               Item {
>                   anchors.centerIn: parent
>
>                   Button {
>                       text: "One"
>                   }
>                   Button {
>                       text: "Two"
>                   }
>                   Button {
>                       text: "Three"
>                   }
>               }
>           }
>
>     But I get: "QML Column: Cannot specify top, bottom, verticalCenter,
>     fill or centerIn anchors for items inside Column."  And the buttons
>     all appear on top of each other.
>
>     --
>     John W. Temples, III
>     _______________________________________________
>     Qt-qml mailing list
>     Qt-qml at qt.nokia.com <mailto:Qt-qml at qt.nokia.com>
>     http://lists.qt.nokia.com/mailman/listinfo/qt-qml
>
>
>
>
>
> _______________________________________________
> Qt-qml mailing list
> Qt-qml at qt.nokia.com
> http://lists.qt.nokia.com/mailman/listinfo/qt-qml


Bo Thorsen,
Fionia Software.

-- 

Expert Qt and C++ developer for hire
Contact me if you need expert Qt help
http://www.fioniasoftware.dk


More information about the Qt-qml mailing list