/index
속성을 수정하려면 속성을 조합하여 현재 선택된 item
을 수정할 수 있습니다. 전자는 선택한 항목을 나타 내기 위해 ListView
에 포함 된 속성입니다 (이미 알고있는 것처럼). 후자는 목록에서 해당 항목의 인덱스를 나타 내기 위해 delegate
에 표시된 속성입니다. 우리가 그럴 때
ListView.view.currentIndex === index
우리는 현재 선택된 아이템입니다.
width: ListView.view.currentIndex === index ? 60 : 30
지금 선택한 항목이 다른 항목보다 두 배 큰 것 : 따라서, 귀하의
delegate
, 당신은 다음처럼 작성할 수 있습니다. 그러나 그 효과는 약간 추합니다. 나는 다음과 같은 하나 갈 것입니다 : 당신은 "이 항목은이 50 % 증가 할 전망 선택된 하나의 경우
가, 그렇지 않으면 50 %으로 축소해야한다"고 말하고있다
다음
scale: ListView.view.currentIndex === index ? 1.5 : 0.5
.
import QtQuick 2.3
import QtQuick.Window 2.0
import QtQuick.Controls 1.2
Window {
id: container
width: 300
height: 150
visible: true
ListView {
id: list
anchors.fill: parent
spacing: 5
model: ListModel{
ListElement{name:"a"}
ListElement{name:"b"}
ListElement{name:"c"}
ListElement{name:"d"}
ListElement{name:"e"}
ListElement{name:"f"}
ListElement{name:"g"}
ListElement{name:"h"}
ListElement{name:"i"}
ListElement{name:"j"}
ListElement{name:"k"}
ListElement{name:"l"}
ListElement{name:"x"}
ListElement{name:"y"}
ListElement{name:"z"}
}
delegate:
Rectangle {
width: ListView.view.currentIndex === index ? 60 : 30 // the magnifying/shrinking
color: "steelblue"
height: ListView.view.height
Text {
anchors.centerIn: parent
text: name
font.pixelSize: 20
}
Behavior on width { // added to smooth the resizing
NumberAnimation { duration: 100 }
}
}
orientation: Qt.Horizontal
highlight: Rectangle {color: "transparent"}
preferredHighlightBegin: 0
preferredHighlightEnd: delegate.width
highlightRangeMode: ListView.StrictlyEnforceRange
}
}
을 그리고 효과가 말했듯이 아름다운되지 않습니다 :
width
에 대한 최종 코드는 다음과 같을 수 있습니다. 하이라이트는 엄격하게 (즉 왼쪽에서) 필요에 따라 목록의 시작 부분에 유지하는 것이
import QtQuick 2.3
import QtQuick.Window 2.0
import QtQuick.Controls 1.2
Window {
id: container
width: 300
height: 150
visible: true
ListView {
id: list
anchors.fill: parent
spacing: 5
model: ListModel{
ListElement{name:"a"}
ListElement{name:"b"}
ListElement{name:"c"}
ListElement{name:"d"}
ListElement{name:"e"}
ListElement{name:"f"}
ListElement{name:"g"}
ListElement{name:"h"}
ListElement{name:"i"}
ListElement{name:"j"}
ListElement{name:"k"}
ListElement{name:"l"}
ListElement{name:"x"}
ListElement{name:"y"}
ListElement{name:"z"}
}
delegate:
Rectangle {
scale: ListView.view.currentIndex === index ? 1.5 : 0.5
color: "transparent"
width: 30
height: ListView.view.height
Text {
anchors.centerIn: parent
text: name
font.pixelSize: 20
}
Behavior on scale { // added to smooth the scaling
NumberAnimation { duration: 100 }
}
}
orientation: Qt.Horizontal
highlight: Rectangle {color: "steelblue"}
preferredHighlightBegin: 0
preferredHighlightEnd: delegate.width
highlightRangeMode: ListView.StrictlyEnforceRange
}
}
참고 : 다음과 같이 나는 scale
속성에 갈 것입니다.