このページでは

LayoutItemProxy QML Type

LayoutItemProxy クラスは、レイアウト内のQQuickItem用のプレースホルダーを提供します。詳細...

Import Statement: import QtQuick.Layouts
Since: QtQuick.Layouts 6.6
Inherits:

Item

プロパティ

詳細な説明

レスポンシブレイアウトの中には、画面サイズに応じて異なるレイアウト階層を必要とするものがありますが、レイアウト階層はQML構造と同じであるため、実行時に変更することはできません。LayoutItemProxyは、レイアウト内でtarget アイテムを表現することで、この制限を克服します。target アイテム自体は、QML階層内のどこにでも定義できます。これにより、同じコンテンツアイテムを持つ複数のレイアウトを宣言することが可能になります。レイアウトの表示・非表示を切り替えることで、レイアウトを切り替えることができます。

LayoutItemProxyは、対象のアイテムが`visible`である場合、そのtarget アイテムの制御を試みます。制御を取得すると、target アイテムの位置とサイズが、LayoutItemProxyの位置とサイズに合わせて調整されます。さらに、LayoutItemProxyは自身をtarget の親として設定し(イベントの伝達と適切な描画順序を確保するため)、可視性をtrue に設定します。 複数のLayoutItemProxyが同じアイテムをtarget に指定することは可能ですが、一度にアイテムを制御できるLayoutItemProxyは1つだけです。したがって、同じアイテムを対象とするプロキシのうち、一度に表示されるのは1つだけとなります。複数のプロキシが同じアイテムを対象としており、かつ各プロキシのvisibleがfalseに設定されている場合、そのアイテムも非表示になります。

target のすべてのLayout アタッチドプロパティ、およびtarget のQQuickItem::implicitWidth とQQuickItem::implicitHeight は、LayoutItemProxyによって転送されます。LayoutItemProxyは、Layout プロパティやサイズに関して、target を可能な限り忠実に模倣します。Layout アタッチドプロパティをLayoutItemProxyに対して明示的に設定することも可能で、これによりtarget プロパティの転送が停止されます。

使用例

これは、プロキシを使用して2つのレイアウトを切り替え、両方のレイアウトで同じアイテムを使用する、最小限の例です。レイアウトを構成するアイテムは、QML構造内の任意の場所で定義できます。

Rectangle {
    id: rectangle1
    color: "tomato"
    Layout.fillHeight: true
    Layout.fillWidth: true
}

Rectangle {
    id: rectangle2
    color: "lightskyblue"
    Layout.fillHeight: true
    Layout.fillWidth: true
}

その後、LayoutItemProxy を使用してレイアウトを定義できます。

GridLayout {
    id: l1
    columns: 1
    visible: false
    anchors.fill: parent
    LayoutItemProxy { target: rectangle1 }
    LayoutItemProxy { target: rectangle2 }
}

GridLayout {
    id: l2
    columns: 2
    visible: true
    anchors.fill: parent
    LayoutItemProxy { target: rectangle1 }
    LayoutItemProxy { target: rectangle2 }
}

これで、レイアウトの表示/非表示を切り替えることで、任意の条件に応じてレイアウトを切り替えることができます。

onWidthChanged: {
    if (width < 300) {
        l2.visible = false
        l1.visible = true
    } else {
        l1.visible = false
        l2.visible = true
    }
}

その結果、2つのレイアウトは以下のようになります:

縦に並んだレイアウトの狭いウィンドウと、横並びのレイアウトの広いウィンドウ

LayoutItemProxyは、レイアウトを使用せずに、例えば異なるアイテムにアンカーを設定するなどして使用することもできます。実際のItems とプロキシアイテムを混在させることも可能であり、レイアウトとアイテムのネストされた構造も同様に可能です。

警告: LayoutItemProxyは 、ターゲットの親を自分自身に設定します。ターゲット項目の親を参照する際は、この点に留意してください。

関連項目: Item 、GridLayout 、RowLayout 、およびColumnLayout 。

プロパティのドキュメント

target : Item

このプロパティには、プロキシがLayout 階層内で表すべきItem が格納されます。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.