Flickable QML Type
“튕길” 수 있는 표면을 제공합니다. 더 보기...
| Import Statement: | import QtQuick |
| Inherits: | |
| Inherited By: | GridView, HorizontalHeaderView, ListView, TableView, TreeView, and VerticalHeaderView |
속성
- acceptedButtons : flags
(since 6.9) - atXBeginning : bool
- atXEnd : bool
- atYBeginning : bool
- atYEnd : bool
- bottomMargin : real
- boundsBehavior : enumeration
- boundsMovement : enumeration
- contentHeight : real
- contentItem : Item
- contentWidth : real
- contentX : real
- contentY : real
- dragging : bool
- draggingHorizontally : bool
- draggingVertically : bool
- flickDeceleration : real
- flickableDirection : enumeration
- flicking : bool
- flickingHorizontally : bool
- flickingVertically : bool
- horizontalOvershoot : real
- horizontalVelocity : real
- interactive : bool
- leftMargin : real
- maximumFlickVelocity : real
- moving : bool
- movingHorizontally : bool
- movingVertically : bool
- originX : real
- originY : real
- pixelAligned : bool
- pressDelay : int
- rebound : Transition
- rightMargin : real
- synchronousDrag : bool
- topMargin : real
- verticalOvershoot : real
- verticalVelocity : real
- visibleArea
- visibleArea.heightRatio : real
- visibleArea.widthRatio : real
- visibleArea.xPosition : real
- visibleArea.yPosition : real
신호
방법
- void cancelFlick()
- void flick(qreal xVelocity, qreal yVelocity)
- void flickTo(point position)
(since 6.11) - void flickToChild(QQuickItem *child, PositionMode mode, point offset)
(since 6.11) - void positionViewAtChild(QQuickItem *child, PositionMode mode, point offset)
(since 6.11) - void resizeContent(real width, real height, point center)
- void returnToBounds()
상세 설명
Flickable 항목은 자식 항목을 드래그하거나 휙 밀어 넘길 수 있는 표면에 배치하여, 자식 항목을 표시하는 뷰가 스크롤되도록 합니다. 이러한 동작은 ListView 및 GridView 와 같이 대량의 자식 항목을 표시하도록 설계된 항목의 기반이 됩니다.
기존 사용자 인터페이스에서는 스크롤 막대나 화살표 버튼과 같은 표준 컨트롤을 사용하여 뷰를 스크롤할 수 있습니다. 어떤 상황에서는 마우스 버튼을 누른 채 커서를 이동하여 뷰를 직접 드래그할 수도 있습니다. 터치 기반 사용자 인터페이스에서는 이러한 드래그 동작에 종종 ‘플릭(flicking)’ 동작이 결합되는데, 이 경우 사용자가 뷰에서 손을 뗀 후에도 스크롤이 계속됩니다.
Flickable은 콘텐츠를 자동으로 잘라내지 않습니다. 전체 화면 항목으로 사용되지 않는 경우, ` clip ` 속성을 true로 설정하는 것을 고려해야 합니다.
사용 예
다음 예제는 큰 이미지의 일부를 보여주는 작은 뷰로, 사용자가 이미지를 드래그하거나 플릭하여 이미지의 다른 부분을 볼 수 있습니다.
import QtQuick
Flickable {
width: 200; height: 200
contentWidth: image.width; contentHeight: image.height
Image { id: image; source: "bigImage.png" }
}Flickable의 자식으로 선언된 항목은 자동으로 Flickable의 contentItem 에 부모-자식 관계가 설정됩니다. Flickable의 자식을 조작할 때는 이 점을 고려해야 하며, 일반적으로 contentItem 의 자식이 관련됩니다. 예를 들어, Flickable에 추가된 항목의 경계는 다음을 통해 확인할 수 있습니다. contentItem.childrenRect
contentX 및 contentY의 예시
다음 이미지는 Flickable이 다양한 방향으로 플릭되는 모습과 그에 따른 contentX 및 contentY 값을 보여줍니다. 파란색 사각형은 Flickable의 콘텐츠를 나타내고, 검은색 테두리는 Flickable의 경계를 나타냅니다.
| contentX 와 contentY 는 모두 0 입니다. |
| contentX 와 contentY 은 모두 50 입니다. |
| contentX 는 -50 이고, contentY 는 50 입니다. |
| contentX 와 contentY 는 둘 다 -50 입니다. |
| contentX 의 주소는 50 이며, contentY 의 주소는 -50 입니다. |
제한 사항
참고: 구현상의 세부 사항으로인해 , Flickable 내부에 배치된 항목은 Flickable에 고정될 수 없습니다. 대신, Flickable의 contentItem 를 참조하는 parent 를 사용하십시오. 콘텐츠 항목의 크기는 contentWidth 와 contentHeight 에 의해 결정됩니다.
속성 설명서
acceptedButtons : flags [since 6.9]
이 Flickable을 드래그하여 스크롤하는 데 사용할 수 있는 마우스 버튼입니다.
기본적으로 이 속성은 ` Qt.LeftButton`로 설정되어 있으며, 이는 이전 Qt 버전에서와 동일한 동작을 제공합니다. 하지만 대부분의 사용자 인터페이스에서 이러한 동작은 예상치 못한 것입니다. 사용자는 터치스크린에서만 플릭 동작을 수행하고, 마우스 휠, 터치패드 제스처 또는 스크롤 막대를 마우스나 터치패드로 사용할 것으로 기대합니다. 드래그 기능을 비활성화하려면 이 속성을 ` Qt.NoButton `로 설정하십시오.
이 속성은 마우스 버튼의 OR 조합으로 설정할 수 있으며, 다른 버튼에서 발생하는 이벤트는 무시합니다.
이 속성은 Qt 6.9에서 도입되었습니다.
atXBeginning : bool [read-only]
atXEnd : bool [read-only]
atYBeginning : bool [read-only]
atYEnd : bool [read-only]
이 속성들은 플릭 가능한 뷰가 각각 시작 부분이나 끝 부분에 위치해 있을 때 참이 됩니다.
이 속성들은 콘텐츠 주변의 여백을 지정합니다. 이 공간은 ` contentWidth ` 및 ` contentHeight` 외에도 추가로 확보됩니다.
boundsBehavior : enumeration
이 속성은 표면을 Flickable의 경계 밖으로 드래그할 수 있는지, 또는 플릭 동작 시 Flickable의 경계를 넘어갈 수 있는지를 결정합니다.
boundsMovement 가 ` Flickable.FollowBoundsBehavior`로 설정된 경우, ` Flickable.StopAtBounds ` 이외의 값을 지정하면 뷰의 가장자리가 딱딱한 물리적 경계라기보다는 부드러운 느낌을 줍니다.
boundsBehavior 는 다음 중 하나를 가질 수 있습니다:
- Flickable.StopAtBounds - 콘텐츠를 Flickable의 경계 너머로 드래그할 수 없으며, 플릭 동작이 경계를 넘어가지 않습니다.
- xml-ph-0000@deepl.internal - 콘텐츠는 Flickable의 경계를 넘어 드래그될 수 있지만, 플릭 동작은 경계를 초과하지 않습니다.
- Flickable.OvershootBounds - 플릭 동작 시 콘텐츠가 경계를 넘어갈 수 있지만, Flickable의 경계 너머로 드래그할 수는 없습니다. (
QtQuick 2.5의 하위 유형) - Flickable.DragAndOvershootBounds (기본값) - 콘텐츠를 Flickable의 경계 너머로 드래그할 수 있으며, 플릭 동작 시 경계를 초과할 수 있습니다.
horizontalOvershoot, verticalOvershoot, boundsMovement도 참조하십시오 .
boundsMovement : enumeration
이 속성은 플릭 가능 요소가 뷰의 가장자리가 딱딱한 물리적 경계가 아니라 부드러운 느낌을 주는지 여부를 나타냅니다.
boundsMovement 의 값은 다음 중 하나일 수 있습니다:
- Flickable.StopAtBounds - 이 값을 사용하면 플릭커블의 경계를 벗어난 드래그나 플릭 동작 시 콘텐츠가 따라가지 않는 사용자 정의 경계 효과를 구현할 수 있습니다. horizontalOvershoot 및 verticalOvershoot 의 값을 활용하여 사용자 정의 경계 효과를 구현할 수 있습니다.
- Flickable.FollowBoundsBehavior (기본값) - 콘텐츠가 플릭 가능 영역의 경계를 넘어 드래그되거나 플릭될 때 따라가는지 여부는 boundsBehavior 에 의해 결정됩니다.
다음 예제는 콘텐츠를 경계 내에 유지하면서, 수평 경계를 넘어 플릭할 때 플립 효과를 적용합니다:
Flickable {
id: flickable
boundsMovement: Flickable.StopAtBounds
boundsBehavior: Flickable.DragAndOvershootBounds
transform: Rotation {
axis { x: 0; y: 1; z: 0 }
origin.x: flickable.width / 2
origin.y: flickable.height / 2
angle: Math.min(30, Math.max(-30, flickable.horizontalOvershoot))
}
}다음 예제는 콘텐츠를 경계 내에 유지하면서, 수직 경계를 넘어 드래그할 때 불투명도 효과를 적용합니다:
Flickable {
boundsMovement: Flickable.StopAtBounds
boundsBehavior: Flickable.DragOverBounds
opacity: Math.max(0.5, 1.0 - Math.abs(verticalOvershoot) / height)
}boundsBehavior, verticalOvershoot 및 horizontalOvershoot도 참조하십시오 .
콘텐츠(Flickable이 제어하는 영역)의 크기입니다. 일반적으로 이 값은 Flickable 내에 배치된 항목들의 합계 크기로 설정해야 합니다.
다음 코드 예제는 이러한 속성을 사용하여 Flickable 항목 자체보다 더 큰 이미지를 표시하는 방법을 보여줍니다:
import QtQuick
Flickable {
width: 200; height: 200
contentWidth: image.width; contentHeight: image.height
Image { id: image; source: "bigImage.png" }
}경우에 따라 콘텐츠 크기는 ` contentItem`의 ` childrenRect.width ` 및 ` childrenRect.height ` 속성을 기반으로 자동으로 설정될 수 있습니다. 예를 들어, 앞의 코드 조각은 다음과 같이 다시 작성할 수 있습니다:
contentWidth: contentItem.childrenRect.width; contentHeight: contentItem.childrenRect.height단, 이는 childrenRect의 원점이 0, 0이라고 가정합니다.
contentItem : Item [read-only]
Flickable 내에서 이동할 항목들을 포함하는 내부 항목입니다.
Flickable의 자식으로 선언된 항목들은 자동으로 Flickable의 contentItem을 부모로 갖게 됩니다.
동적으로 생성된 아이템은 contentItem에 명시적으로 부모-자식 관계를 설정해야 합니다:
Flickable {
id: myFlickable
function addItem(file) {
var component = Qt.createComponent(file)
component.createObject(myFlickable.contentItem);
}
}이 속성들은 현재 Flickable의 왼쪽 상단 모서리에 있는 표면 좌표를 저장합니다. 예를 들어, 이미지를 100픽셀 위로 플릭하면 ` contentY ` 값이 100 증가합니다.
참고: 원점(왼쪽 상단 모서리)으로 다시 플릭한경우 , 리바운드 애니메이션이 끝난 후 contentX 는 originX 와 동일한 값으로, contentY 는 originY 와 동일한 값으로 안정화됩니다. 이 값들은 일반적으로 (0,0)이지만, ListView 및 GridView 의 경우 델리게이트 크기 변동이나 가시 영역 외부의 항목 삽입/제거로 인해 임의의 원점을 가질 수 있습니다. 따라서 수직 스크롤바와 같은 기능을 구현하려는 경우, 한 가지 방법은 위치로 y: (contentY - originY) * (height / contentHeight) 를 사용하는 것이고, 다른 방법은 visibleArea 에 있는 정규화된 값을 사용하는 것입니다.
또한 Examples of contentX and contentY, originX 및 originY 도참조하십시오 .
dragging : bool [read-only]
draggingHorizontally : bool [read-only]
draggingVertically : bool [read-only]
이 속성들은 사용자가 뷰를 드래그함에 따라 뷰가 현재 수평으로, 수직으로, 또는 양방향으로 이동하고 있는지를 나타냅니다.
flickDeceleration : real
이 속성은 플릭 동작의 감속률을 결정합니다. 수치가 높을수록 사용자가 터치로 플릭 동작을 멈출 때 속도가 더 빠르게 줄어듭니다. 예를 들어, 0.0001은 거의 “마찰이 없는” 상태이며, 10000은 상당히 “끈적거리는” 느낌을 줍니다.
기본값은 플랫폼에 따라 다릅니다. 0 이하인 값은 사용할 수 없습니다.
flickableDirection : enumeration
이 속성은 뷰를 어떤 방향으로 플릭할 수 있는지를 결정합니다.
- Flickable.AutoFlickDirection (기본값) - contentHeight가 Flickable의 높이와 같지 않은 경우 수직 플릭을 허용합니다. contentWidth가 Flickable의 너비와 같지 않은 경우 수평 플릭을 허용합니다.
- Flickable.AutoFlickIfNeeded - contentHeight가 Flickable의 높이 보다 큰 경우 수직 플릭을 허용합니다. contentWidth 가 Flickable의 너비 보다 큰 경우 수평 플릭을 허용합니다. (
QtQuick 2.7부터) - Flickable.HorizontalFlick - 수평 플릭을 허용합니다.
- Flickable.VerticalFlick - 수직 플릭을 허용합니다.
- Flickable.HorizontalAndVerticalFlick - 양방향으로 플릭할 수 있도록 합니다.
flicking : bool [read-only]
flickingHorizontally : bool [read-only]
flickingVertically : bool [read-only]
이 속성들은 사용자가 뷰를 휙 튕기는 동작으로 인해 뷰가 현재 수평, 수직 또는 양방향으로 이동하고 있는지 여부를 나타냅니다.
horizontalOvershoot : real [read-only]
이 속성은 수평 오버슈트, 즉 콘텐츠가 플릭 가능한 영역의 경계를 넘어 드래그되거나 플릭된 수평 거리를 나타냅니다. 콘텐츠가 시작 지점을 넘어 드래그되거나 플릭된 경우 값은 음수이며, 끝 지점을 넘어간 경우 양수입니다. 그 외의 경우에는 0.0 입니다.
드래그 및/또는 플릭에 대해 이 값이 보고되는지는 ` boundsBehavior`에 의해 결정됩니다. ` boundsMovement `가 ` Flickable.StopAtBounds`인 경우에도 오버슈트 거리는 보고됩니다.
verticalOvershoot, boundsBehavior 및 boundsMovement항목도 참조하십시오 .
x축 및 y축을 따라 이동하는 순간 속도(픽셀/초).
보고된 속도는 불규칙한 출력을 방지하기 위해 평활화됩니다.
콘텐츠 크기가 큰 뷰(뷰 크기의 10배 이상)의 경우, 여러 번의 빠른 연속 플릭 동작이 발생할 때 플릭 속도가 터치 속도를 초과할 수 있습니다. 이를 통해 사용자는 대용량 콘텐츠를 더 빠르게 넘길 수 있습니다.
interactive : bool
이 속성은 사용자가 Flickable과 상호작용할 수 있는지 여부를 나타냅니다. 상호작용이 불가능한 Flickable은 사용자가 드래그하거나 플릭할 수 없습니다.
기본적으로 이 속성의 값은 true입니다.
이 속성은 플릭 동작을 일시적으로 비활성화하는 데 유용합니다. 이를 통해 Flickable의 자식 요소와 특별한 상호작용을 할 수 있습니다. 예를 들어, Flickable의 자식인 팝업 대화 상자를 스크롤하는 동안 Flickable 지도 화면을 고정하고 싶을 수 있습니다.
maximumFlickVelocity : real
이 속성은 사용자가 뷰를 플릭할 수 있는 최대 속도(픽셀/초)를 나타냅니다.
기본값은 플랫폼에 따라 다릅니다.
이 속성들은 사용자가 뷰를 드래그하거나 플릭하는 동작에 따라 뷰가 현재 수평으로, 수직으로, 혹은 양방향으로 이동하고 있는지를 나타냅니다.
이 속성들은 콘텐츠의 원점을 나타냅니다. 이 값은 레이아웃 방향과 관계없이 항상 콘텐츠의 왼쪽 상단 위치를 가리킵니다.
일반적으로 이 값은 (0,0)이지만, ListView 및 GridView 의 경우 델리게이트 크기의 변동이나 가시 영역 외부의 항목 삽입/제거로 인해 임의의 원점을 가질 수 있습니다.
pixelAligned : bool
이 속성은 ` contentX ` 및 ` contentY `의 정렬 방식을 픽셀(true) 또는 서브픽셀(false)로 설정합니다.
픽셀 정렬(pixelAligned)을 활성화하면 정지된 콘텐츠나 1픽셀 폭의 선, 텍스트, 벡터 그래픽 등 대비가 높은 가장자리를 가진 움직이는 콘텐츠에 최적화됩니다. 애니메이션 품질을 최적화할 때는 픽셀 정렬(pixelAligned)을 비활성화하십시오.
기본값은 ` false`입니다.
pressDelay : int
이 속성은 Flickable의 자식 요소에 대한 누름 이벤트를 전달하기까지의 지연 시간(ms)을 지정합니다. 이 기능은 플릭 동작이 완료되기 전에 누름 이벤트에 반응할 경우 원치 않는 결과가 발생할 수 있는 경우에 유용합니다.
지연 시간이 만료되기 전에 Flickable이 드래그되거나 플릭 동작이 수행되면 누름 이벤트는 전달되지 않습니다. 타임아웃 기간 내에 버튼이 놓이면 누름 및 놓음 이벤트가 모두 전달됩니다.
pressDelay가 설정된 중첩된 Flickable의 경우, 가장 바깥쪽 Flickable의 pressDelay 값은 가장 안쪽 Flickable에 의해 재정의된다는 점에 유의하십시오. 드래그가 플랫폼의 드래그 임계값을 초과하면, 이 속성과 관계없이 누름 이벤트가 전달됩니다.
QStyleHints도 참조하십시오 .
rebound : Transition
이 속성은 콘텐츠 뷰가 플릭 가능 영역의 경계로 다시 돌아올 때 적용될 전환 효과를 저장합니다. 이 전환 효과는 뷰가 콘텐츠 영역의 가장자리를 넘어 플릭되거나 드래그될 때, 또는 ` returnToBounds()`가 호출될 때 트리거됩니다.
import QtQuick 2.0
Flickable {
width: 150; height: 150
contentWidth: 300; contentHeight: 300
rebound: Transition {
NumberAnimation {
properties: "x,y"
duration: 1000
easing.type: Easing.OutBounce
}
}
Rectangle {
width: 300; height: 300
gradient: Gradient {
GradientStop { position: 0.0; color: "lightsteelblue" }
GradientStop { position: 1.0; color: "blue" }
}
}
}위의 뷰가 경계 너머로 플릭되면, 지정된 전환 효과를 사용하여 경계 내로 돌아옵니다:
이 속성이 설정되지 않은 경우, 기본 애니메이션이 적용됩니다.
synchronousDrag : bool
이 속성이 true로 설정된 경우, 마우스나 터치 지점이 콘텐츠를 드래그하기 시작할 만큼 충분히 이동하면 콘텐츠가 점프하여, 클릭 시 커서나 터치 지점 아래에 있던 콘텐츠 픽셀이 해당 지점 아래에 그대로 유지됩니다.
기본값은 ` false`이며, 이 설정은 드래그 시작 시 드래그 거리 중 일부가 "손실"되는 대가로 더 부드러운 사용자 경험(점프 없음)을 제공합니다.
verticalOvershoot : real [read-only]
이 속성은 수직 오버슈트, 즉 콘텐츠가 플릭 가능 영역의 경계를 넘어 드래그되거나 플릭된 수직 거리를 나타냅니다. 콘텐츠가 시작 지점을 넘어 드래그되거나 플릭된 경우 값은 음수이며, 끝 지점을 넘어간 경우 양수입니다. 그 외의 경우에는 0.0 입니다.
드래그 및/또는 플릭에 대해 해당 값이 보고되는지는 ` boundsBehavior`에 의해 결정됩니다. ` boundsMovement `가 ` Flickable.StopAtBounds`인 경우에도 오버슈트 거리는 보고됩니다.
horizontalOvershoot, boundsBehavior 및 boundsMovement항목도 참조하십시오 .
visibleArea group
visibleArea.heightRatio : real [read-only]
visibleArea.widthRatio : real [read-only]
visibleArea.xPosition : real [read-only]
visibleArea.yPosition : real [read-only]
이 속성들은 현재 표시되고 있는 영역의 위치와 크기를 나타냅니다. 크기는 현재 보이는 전체 화면의 백분율로 정의되며, 0.0에서 1.0 사이의 값으로 변환됩니다. 페이지 위치는 일반적으로 0.0(시작)부터 1.0에서 크기 비율을 뺀 값(끝) 사이의 범위에 속합니다. 즉, ` yPosition `는 0.0부터 1.0 - `heightRatio` 사이의 범위에 속합니다. 그러나 콘텐츠가 정상 범위를 벗어나 드래그될 수 있으며, 이로 인해 페이지 위치도 정상 범위를 벗어날 수 있습니다.
이러한 속성은 일반적으로 스크롤바를 그리는 데 사용됩니다. 예를 들어:
Rectangle {
width: 200; height: 200
Flickable {
id: flickable
...
}
Rectangle {
id: scrollbar
anchors.right: flickable.right
y: flickable.visibleArea.yPosition * flickable.height
width: 10
height: flickable.visibleArea.heightRatio * flickable.height
color: "black"
}
}Signal 문서
dragEnded()
사용자가 뷰를 드래그하는 것을 멈출 때 이 신호가 발생합니다.
터치 또는 마우스 버튼을 떼는 시점에 드래그 속도가 충분히 빠르면 플릭 동작이 시작됩니다.
참고: 해당 핸들러는 onDragEnded 입니다.
dragStarted()
이 신호는 사용자의 조작으로 인해 뷰가 드래그되기 시작할 때 발생합니다.
참고: 해당 핸들러는 onDragStarted 입니다.
flickEnded()
이 신호는 플릭 동작 하나 또는 일련의 플릭 동작 후 뷰의 이동이 멈출 때 발생합니다.
참고: 해당 핸들러는 onFlickEnded 입니다.
flickStarted()
이 신호는 뷰를 휙 움직일 때 발생합니다. 휙 움직임은 마우스나 터치가 움직이는 도중에 놓인 지점에서 시작됩니다.
참고: 해당 핸들러는 onFlickStarted 입니다.
movementEnded()
이 신호는 사용자 상호작용이나 생성된 flick()로 인해 뷰의 이동이 중지될 때 발생합니다. 플릭이 활성화된 상태였다면, 플릭이 중지되는 즉시 이 신호가 발생합니다. 플릭이 활성화되지 않은 상태였다면, 사용자가 드래그를 중지할 때(즉, 마우스나 터치 버튼을 놓을 때) 이 신호가 발생합니다.
참고: 이에 대응하는핸들러는 onMovementEnded 입니다.
movementStarted()
이 신호는 사용자 상호작용이나 flick() 함수의 호출로 인해 뷰가 이동을 시작할 때 발생합니다.
참고: 해당 핸들러는 onMovementStarted 입니다.
메서드 문서
void cancelFlick()
현재의 플릭 애니메이션을 취소합니다.
void flick(qreal xVelocity, qreal yVelocity)
xVelocity 의 속도로 콘텐츠를 수평 방향으로, yVelocity 의 속도로 수직 방향으로 픽셀/초 단위로 스와이프합니다.
이 메서드를 호출하면 실제 터치스크린에서 플릭하는 것과 마찬가지로, 해당 이동 및 플릭 속성과 신호가 업데이트됩니다.
[since 6.11] void flickTo(point position)
플릭 가능한 요소를 position 로 플릭합니다.
플릭 가능한 객체를 플릭할 때 객체의 시작 부분이나 끝 부분에 빈 공간이 표시될 경우, 해당 객체는 경계에서 플릭 동작을 중지합니다.
이 메서드는 Qt 6.11에서 도입되었습니다.
[since 6.11] void flickToChild(QQuickItem *child, PositionMode mode, point offset)
child 항목(자식인 경우)이 mode 에서 지정한 위치에 오도록 플릭 가능한 항목을 플릭합니다. mode 는 다음 항목들의 OR 연산 조합일 수 있습니다:
| 상수 | 설명 |
|---|---|
Flickable.AlignLeft | 뷰의 왼쪽에 있는 자식을 플릭합니다. |
Flickable.AlignHCenter | 뷰의 수평 중심에 있는 자식 요소를 플릭합니다. |
Flickable.AlignRight | 뷰의 오른쪽에 있는 자식 요소를 플릭합니다. |
Flickable.AlignTop | 뷰 상단에 있는 자식 요소를 휙 밀어주세요. |
Flickable.AlignVCenter | 뷰의 세로 중앙에 있는 자식 요소를 휙 밀기. |
Flickable.AlignBottom | 뷰 하단에 있는 자식 요소를 휙 밀어주세요. |
Flickable.AlignCenter | (Flickable.AlignHCenter | Flickable.AlignVCenter)와 동일합니다. |
Flickable.Visible | 자식 요소의 일부라도 표시되어 있다면 아무 조치도 취하지 않습니다. 그렇지 않은 경우, 자식 요소 전체가 표시되도록 콘텐츠 항목을 이동합니다. |
Flickable.Contain | 자식 요소 전체가 보이는 경우 아무 조치도 취하지 않습니다. 그렇지 않은 경우, 자식 요소 전체가 보이도록 콘텐츠 항목을 이동합니다. 자식 요소가 뷰보다 큰 경우, 자식 요소의 왼쪽 상단 부분이 우선적으로 선택됩니다. |
수직 정렬이 지정되지 않은 경우, 수직 플릭 동작은 무시됩니다. 수평 정렬의 경우에도 마찬가지입니다.
선택적으로 ` offset `을 지정하여 대상 정렬 위치보다 추가로 특정 픽셀 수만큼 더 멀리 이동하도록 할 수 있습니다.
자식 항목에서 플릭 가능한 항목을 플릭할 때, 플릭 가능한 항목의 시작 또는 끝 부분에 빈 공간이 표시될 경우, 플릭 가능한 항목은 경계에서 플릭을 중지합니다.
import QtQuick
import QtQuick.Controls
import QtQuick.Window
Flickable {
id: flickable
width: 200
height: 200
contentWidth: width
contentHeight: column.height
// Will flick to the beginning of the activeFocusItem every time it changes
property Item activeFocusItem: Window.activeFocusItem
onActiveFocusItemChanged: flickable.flickToChild(activeFocusItem, Flickable.AlignTop)
Column {
id: column
spacing: 10
Repeater {
model: 10
TextArea {}
}
}
}이 메서드는 Qt 6.11에서 도입되었습니다.
[since 6.11] void positionViewAtChild(QQuickItem *child, PositionMode mode, point offset)
contentX 와 contentY 의 위치를 조정하여, child 항목(자식인 경우)이 mode 에서 지정한 위치에 오도록 합니다. mode 는 다음 항목들의 논리합(OR) 조합일 수 있습니다:
| 상수 | 설명 |
|---|---|
Flickable.AlignLeft | 자식을 뷰의 왼쪽에 배치합니다. |
Flickable.AlignHCenter | 자식을 뷰의 수평 중앙에 배치합니다. |
Flickable.AlignRight | 자식 요소를 뷰의 오른쪽에 배치합니다. |
Flickable.AlignTop | 자식 요소를 뷰의 상단에 배치합니다. |
Flickable.AlignVCenter | 자식 요소를 뷰의 수직 중앙에 배치합니다. |
Flickable.AlignBottom | 자식 요소를 뷰의 하단에 배치합니다. |
Flickable.AlignCenter | (Flickable.AlignHCenter | Flickable.AlignVCenter)와 동일합니다. |
Flickable.Visible | 자식 요소의 일부라도 표시되어 있다면 아무 조치도 취하지 않습니다. 그렇지 않은 경우, 자식 요소 전체가 표시되도록 콘텐츠 항목을 이동합니다. |
Flickable.Contain | 자식 요소 전체가 보이는 경우 아무 조치도 취하지 않습니다. 그렇지 않은 경우, 자식 요소 전체가 보이도록 콘텐츠 항목을 이동합니다. 자식 요소가 뷰보다 큰 경우, 자식 요소의 왼쪽 상단 부분이 우선적으로 선택됩니다. |
수직 정렬이 지정되지 않은 경우, 수직 위치는 무시됩니다. 수평 정렬도 마찬가지입니다.
선택적으로 ` offset `을 지정하여 `contentX `와 `contentY `를 목표 정렬 위치보다 추가로 지정된 픽셀 수만큼 이동시킬 수 있습니다.
자식 항목에 플릭커블을 배치할 때 플릭커블의 시작 부분이나 끝 부분에 빈 공간이 표시될 경우, 플릭커블은 경계선에 배치됩니다.
import QtQuick
import QtQuick.Controls
import QtQuick.Window
Flickable {
id: flickable
width: 200
height: 200
contentWidth: width
contentHeight: column.height
// Will center activeFocusItem in the Flickable every time it changes
property Item activeFocusItem: Window.activeFocusItem
onActiveFocusItemChanged: flickable.positionViewAtChild(activeFocusItem, Flickable.AlignCenter)
Column {
id: column
spacing: 10
Repeater {
model: 10
TextArea {}
}
}
}이 메서드는 Qt 6.11에서 도입되었습니다.
void resizeContent(real width, real height, point center)
콘텐츠 크기를 width x height (약 center)로 조정합니다.
이는 Flickable의 콘텐츠 크기를 조정하는 것이 아니라, contentWidth 및 contentHeight 의 크기만 조정합니다.
콘텐츠의 크기를 조정하면 콘텐츠가 Flickable의 경계 밖으로 벗어나게 될 수 있습니다. returnToBounds()를 호출하면 콘텐츠가 허용된 경계 내로 다시 이동합니다.
void returnToBounds()
콘텐츠가 법적 범위 내에 있는지 확인합니다.
콘텐츠를 수동으로 배치한 후, 해당 콘텐츠가 법적 범위 내에 있는지 확인하기 위해 이 메서드가 호출될 수 있습니다.
© 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.




