web-dev-qa-db-ja.com

Qt5 QML、ColumnLayoutとColumnをいつ使用するか?

たとえば、これは機能します。

import QtQuick 2.5
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
import QtQuick.Layouts 1.2

ApplicationWindow
{
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    function thingWidth()
    {
        return width*80/100
    }

    Column
    {
        spacing: 10;
        anchors.horizontalCenter: parent.horizontalCenter

        Thing { color: "red"; width: thingWidth(); }
        Thing { color: "yellow"; width: thingWidth();  }
        Thing { color: "green"; width: thingWidth();  }
    }

}

ただし、ColumnColumnLayoutに変更すると、変更されません(ウィンドウのサイズを変更すると、レイアウトが正しく機能しなくなります)。

助けてくれてありがとう。

編集1:

こちらもThing.qml要求に応じて、

import QtQuick 2.0

Item {
    property alias color: rectangle.color
    width: 50; height: 50

    Rectangle
    {
        id: rectangle
        border.color: "white"
        anchors.fill: parent
    }
}

私の投稿はほとんどコードのようです。はい、乳母はそうします!これは、人々がここにコードを投稿するためです。

13
jkj yuio

documentation of Columnから:

列は、子アイテムを単一の列に沿って配置するタイプです。アンカーを使用せずに一連のアイテムを垂直に配置する便利な方法として使用できます。

さらに、挿入、削除などの際の遷移を容易にします。また、アイテムに properties を添付して、アイテムの位置についての概念を提供します。

一方、 thisGridLayoutのドキュメントです(ColumnLayoutは便利なユーティリティですが、1列のグリッドにすぎないことに注意してください) 、その ドキュメント からのように。
完全に異なるプロパティのセットと、アイテムの配置に完全に合わせた添付プロパティがあります。

とにかく、ドキュメントから最も興味深いページは that 1つだと思います。
私は単にそれを引用します:

ポジショナーアイテムは、宣言型ユーザーインターフェイスでアイテムの位置を管理するコンテナーアイテムです。ポジショナーは、それ自体がコンテナーでもあることを除いて、標準のQtウィジェットで使用されるレイアウトマネージャーと同じように動作します。

ポジショナーを使用すると、通常のレイアウトで配置する必要がある場合に、多くのアイテムを簡単に操作できます。

Qtクイックレイアウトを使用して、ユーザーインターフェースにQtクイックアイテムを配置することもできます。これらは、宣言型ユーザーインターフェイス上のアイテムの位置とサイズの両方を管理し、サイズ変更可能なユーザーインターフェイスに最適です。

ColumnPositionerであり、ColumnLayoutLayoutであることに注意してください。それらをいつ使用するかは、いつものように、主にあなたの目標に依存します。

9
skypjack