이 페이지에서

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만 항목을 제어할 수 있습니다. 따라서 동일한 항목을 대상으로 하는 프록시 중 한 개만 한 번에 표시되어야 합니다. 여러 프록시가 동일한 항목을 대상으로 하지만 각 프록시의 visible 속성이 false로 설정된 경우, 해당 항목도 보이지 않게 됩니다.

target 의 모든 Layout 부착 속성은 물론, target 의 QQuickItem::implicitWidth 및 QQuickItem::implicitHeight 속성도 LayoutItemProxy에 의해 전달됩니다. LayoutItemProxy는 Layout 속성과 크기 측면에서 target 를 가능한 한 정확하게 모방합니다. Layout 부착 속성은 LayoutItemProxy에 명시적으로 설정할 수도 있으며, 이 경우 target 속성의 전달이 중지됩니다.

사용 예시

다음은 두 레이아웃 간에 전환하면서 프록시를 사용하여 두 레이아웃 모두에서 동일한 항목을 사용하는 최소한의 예제입니다. 레이아웃을 구성하는 항목은 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
    }
}

그 결과 생성된 두 레이아웃은 다음과 같습니다:

겹쳐진 레이아웃의 좁은 창과 나란히 배치된 레이아웃의 넓은 창

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.