2017-02-19 48 views
1

Как остановить перемещение элемента Pathview в QML, когда он достигнет последнего элемента в модели (например, поведение по умолчанию в виде списка и по умолчанию) .ie, я не хотите циклическое движение.Остановить движение Pathview на последнем элементе

в приведенном ниже коде, если мы пропустим сразу после первого («первого») элемента последним («последним») будет отображаться (тогда «Jane Doe»). Что можно сделать, чтобы остановить дальнейшие прокрутки вправо, когда первая достигается и далее проведите пальцем в левой стороне, когда последний элемент reached.it должен остановиться, когда первый или последний достигается

import QtQuick 2.5 
import QtQuick.Window 2.2 

Window { 
    visible: true 
    width: 640 
    height: 480 
    title: qsTr("Hello World") 

    ListModel { 
     id:contactModel 
     ListElement { 
      name: "first" 
      icon: "pic.png" 
     } 
     ListElement { 
      name: "Jane Doe" 
      icon: "pic.png" 
     } 
     ListElement { 
      name: "John Smith" 
      icon: "pic.png" 
     } 

     ListElement { 
      name: "Bill Jones" 
      icon: "pic.png" 
     } 
     ListElement { 
      name: "Jane Doe" 
      icon: "pic.png" 
     } 
     ListElement { 
      name: "John Smith" 
      icon: "pic.png" 
     } 
     ListElement { 
      name: "Bill Jones" 
      icon: "pic.png" 
     } 
     ListElement { 
      name: "Jane Doe" 
      icon: "pic.png" 
     } 
     ListElement { 
      name: "last" 
      icon: "pic.png" 
     } 
    } 

     Component { 
      id: delegate 
      Column { 
       id: wrapper 
       Image { 
        anchors.horizontalCenter: nameText.horizontalCenter 
        width: 64; height: 64 
        source: icon 
       } 
       Text { 
        id: nameText 
        text: name 
        font.pointSize: 5 
        color: wrapper.PathView.isCurrentItem ? "red" : "black" 
       } 
      } 
     } 

     PathView { 
      anchors.fill: parent 
      model: contactModel 
      delegate: delegate 
      snapMode:PathView.SnapOneItem 
      path: Path { 
       startX: 0; startY: 100 


       PathLine { x: 640; y: 400; } 
      } 
     } 

} 
+1

Просьба указать код, который вы написали. Чем больше информации вы предоставите, тем больше ответов вы получите. Проверьте [FAQ] (http://stackoverflow.com/tour) и [Как спросить] (http://stackoverflow.com/help/how-to-ask). –

ответ

1

Вот это как реализация может выглядеть (я не смог найти доступные свойства, чтобы сделать это)

PathView { 
    property int previousCurrentIndex: 0 
    currentIndex: 0 
    ... 

    onCurrentIndexChanged: { 
     var lastIndex = contactModel.count - 1 
     if (currentIndex == 0 && previousCurrentIndex == lastIndex) { 
      pathViewId.positionViewAtIndex(lastIndex, PathView.Beginning) 
     } else if (currentIndex == lastIndex && previousCurrentIndex == 0) { 
      pathViewId.positionViewAtIndex(0, PathView.Beginning) 
     } 
     previousCurrentIndex = currentIndex 
    } 
} 

Таможенное имущество previousCurrentIndex введено й расчет фактических currentIndex делается при испускании onCurrentIndexChanged signal

+0

Жаль, что это не ожидалось. Я отредактировал вопрос. I хочу остановить дальнейшее перемещение пути. – Bibin

+0

Пожалуйста, проверьте отредактированный ответ, он ограничивает перемещение PathView на элемент с последним индексом в модели данных. Вы должны иметь возможность настроить это решение точно так, как вам нужно. –

+0

Это останавливается на первом и последнем, но это отрывисто. – Bibin