Container QML Type

컨테이너에 공통된 기능을 제공하는 추상 기본 유형입니다. 더 보기...

Import Statement: import QtQuick.Controls
Inherits:

Control

Inherited By:

DialogButtonBox, MenuBar, SplitView, SwipeView, and TabBar

속성

방법

상세 설명

컨테이너는 항목을 동적으로 삽입 및 제거할 수 있는 컨테이너형 사용자 인터페이스 컨트롤의 기본 유형입니다.

컨테이너 사용

일반적으로 항목은 정적으로 컨테이너의 하위 항목으로 선언되지만 add, insert, moveremove 항목을 동적으로 선언할 수도 있습니다. 컨테이너의 항목은 itemAt() 또는 contentChildren 을 사용하여 액세스할 수 있습니다.

대부분의 컨테이너에는 "현재" 항목이라는 개념이 있습니다. 현재 항목은 currentIndex 속성을 통해 지정되며 읽기 전용 currentItem 속성을 사용하여 액세스할 수 있습니다.

다음 예는 컨테이너의 구체적인 구현 중 하나인 TabBar 에 항목을 동적으로 삽입하는 방법을 보여줍니다.

Row {
    TabBar {
        id: tabBar

        currentIndex: 0
        width: parent.width - addButton.width

        TabButton { text: "TabButton" }
    }

    Component {
        id: tabButton
        TabButton { text: "TabButton" }
    }

    Button {
        id: addButton
        text: "+"
        flat: true
        onClicked: {
            tabBar.addItem(tabButton.createObject(tabBar))
            console.log("added:", tabBar.itemAt(tabBar.count - 1))
        }
    }
}

현재 인덱스 관리하기

TabBarSwipeView 과 같은 여러 컨테이너를 함께 사용하는 경우 해당 컨테이너의 currentIndex 속성을 서로 바인딩하여 동기화 상태를 유지할 수 있습니다. 사용자가 어느 한 컨테이너와 상호작용하면 현재 인덱스 변경 사항이 자동으로 다른 컨테이너로 전파됩니다.

그러나 JavaScript에서 currentIndex 값을 할당하면 해당 바인딩이 제거된다는 점에 유의하세요. 바인딩을 유지하려면 다음 메서드를 사용하여 현재 인덱스를 변경하세요:

TabBar {
    id: tabBar
    currentIndex: swipeView.currentIndex
}

SwipeView {
    id: swipeView
    currentIndex: tabBar.currentIndex
}

Button {
    text: qsTr("Home")
    onClicked: swipeView.setCurrentIndex(0)
    enabled: swipeView.currentIndex != 0
}

Button {
    text: qsTr("Previous")
    onClicked: swipeView.decrementCurrentIndex()
    enabled: swipeView.currentIndex > 0
}

Button {
    text: qsTr("Next")
    onClicked: swipeView.incrementCurrentIndex()
    enabled: swipeView.currentIndex < swipeView.count - 1
}

컨테이너 구현하기

컨테이너는 기본 시각화를 제공하지 않습니다. SwipeViewTabBar 과 같은 컨테이너를 구현하는 데 사용됩니다. 사용자 정의 컨테이너를 구현할 때 API에서 가장 중요한 부분은 contentModel 으로, 항목 보기 및 반복기의 객체 모델로 사용할 수 있는 방식으로 포함된 항목을 제공합니다.

Container {
    id: container

    contentItem: ListView {
        model: container.contentModel
        snapMode: ListView.SnapOneItem
        orientation: ListView.Horizontal
    }

    Text {
        text: "Page 1"
        width: container.width
        height: container.height
    }

    Text {
        text: "Page 2"
        width: container.width
        height: container.height
    }
}

페이지 항목의 크기가 수작업으로 설정되어 있는 것을 주목하세요. 이는 이 예제에서 시각적 레이아웃에 대한 어떠한 가정도 하지 않는 일반 컨테이너를 사용하기 때문입니다. 일반적으로 SwipeViewTabBar 과 같은 구체적인 컨테이너 구현에서는 항목의 크기를 지정할 필요가 없습니다.

컨테이너 컨트롤도참조하세요 .

속성 문서

contentChildren : list<Item>

이 속성은 콘텐츠 자식 목록을 보유합니다.

이 목록에는 QML에서 컨테이너의 자식으로 선언된 모든 항목과 addItem() 및 insertItem() 메서드를 사용하여 각각 동적으로 추가되거나 삽입된 항목이 포함됩니다.

참고: contentData 와 달리 contentChildren 에는 시각적이지 않은 QML 객체가 포함되지 않습니다. 항목이 삽입되거나 이동할 때 다시 정렬됩니다.

Item::childrencontentData도 참조하세요 .


contentData : list<QtObject> [default]

이 속성은 콘텐츠 데이터의 목록을 보유합니다.

이 목록에는 QML에서 컨테이너의 자식으로 선언된 모든 객체와 addItem() 및 insertItem() 메서드를 사용하여 각각 동적으로 추가되거나 삽입된 항목도 포함됩니다.

참고: contentChildren 와 달리 contentData 에는 시각적이지 않은 QML 객체가 포함됩니다. 항목이 삽입되거나 이동할 때 순서가 바뀌지 않습니다.

Item::datacontentChildren참조하세요 .


contentHeight : real [since QtQuick.Controls 2.5 (Qt 5.12)]

이 속성은 콘텐츠 높이를 보유합니다. 컨테이너의 총 암시적 높이를 계산하는 데 사용됩니다.

명시적으로 재정의하지 않는 한 콘텐츠 높이는 컨테이너에 있는 항목의 암시적 높이에 따라 자동으로 계산됩니다.

이 프로퍼티는 QtQuick.Controls 2.5(Qt 5.12)에 도입되었습니다.

contentWidth참조하십시오 .


contentModel : model [read-only]

이 속성은 항목의 콘텐츠 모델을 보유합니다.

콘텐츠 모델은 시각화 목적으로 제공됩니다. 컨테이너의 내용을 표시하는 콘텐츠 항목에 모델로 할당할 수 있습니다.

Container {
    id: container
    contentItem: ListView {
        model: container.contentModel
    }
}

contentDatacontentChildren참조하세요 .


contentWidth : real [since QtQuick.Controls 2.5 (Qt 5.12)]

이 속성은 콘텐츠 너비를 보유합니다. 컨테이너의 총 암시적 너비를 계산하는 데 사용됩니다.

명시적으로 재정의하지 않는 한 콘텐츠 너비는 컨테이너에 있는 항목의 암시적 너비에 따라 자동으로 계산됩니다.

이 프로퍼티는 QtQuick.Controls 2.5(Qt 5.12)에 도입되었습니다.

contentHeight참조하십시오 .


count : int [read-only]

이 속성은 항목 수를 보유합니다.


currentIndex : int

이 속성은 현재 항목의 인덱스를 보유합니다.

currentItemManaging the Current Index참조하십시오 .


currentItem : Item [read-only]

이 속성은 현재 항목을 보유합니다.

currentIndex도 참조 하세요.


메서드 문서

void addItem(Item item)

item.


[since QtQuick.Controls 2.1 (Qt 5.8)] void decrementCurrentIndex()

컨테이너의 현재 인덱스를 감소시킵니다.

이 메서드를 호출하면 기존 currentIndex 바인딩을 깨지 않고 현재 인덱스를 변경할 수 있습니다.

이 메서드는 QtQuick.Controls 2.1(Qt 5.8)에 도입되었습니다.

currentIndexManaging the Current Index참조하십시오 .


[since QtQuick.Controls 2.1 (Qt 5.8)] void incrementCurrentIndex()

컨테이너의 현재 인덱스를 증가시킵니다.

이 메서드를 호출하면 기존 currentIndex 바인딩을 깨지 않고 현재 인덱스를 변경할 수 있습니다.

이 메서드는 QtQuick.Controls 2.1(Qt 5.8)에 도입되었습니다.

currentIndexManaging the Current Index참조하십시오 .


void insertItem(int index, Item item)

indexitem 을 삽입합니다.


Item itemAt(int index)

index 또는 존재하지 않는 경우 null 에 있는 항목을 반환합니다.


void moveItem(int from, int to)

from 항목을 to 다른 인덱스로 이동합니다.


[since QtQuick.Controls 2.3 (Qt 5.10)] void removeItem(Item item)

지정된 item 을 제거하고 파괴합니다.

이 메서드는 QtQuick.Controls 2.3(Qt 5.10)에 도입되었습니다.


void setCurrentIndex(int index)

컨테이너의 현재 index 를 설정합니다.

이 메서드는 기존 currentIndex 바인딩을 깨지 않고 특정 현재 인덱스를 설정하기 위해 호출할 수 있습니다.

currentIndexManaging the Current Index참조하십시오 .


[since QtQuick.Controls 2.3 (Qt 5.10)] Item takeItem(int index)

index 에서 항목을 삭제하고 반환합니다.

참고: 항목의 소유권은 호출자에게 이전됩니다.

이 메서드는 QtQuick.Controls 2.3(Qt 5.10)에 도입되었습니다.


© 2025 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.