Cacher le point culminant D'une ListView en faisant défiler

je construis une application Qt5 basée sur Qt-Quick 2 pour L'UI. J'ai un problème lors de l'affichage d'une ListView avec une évidence composant. Quand je fais défiler le ListView, le rectangle de surlignage est visible à l'extérieur du ListView et je ne trouve pas de moyen de l'éviter.

voici un exemple de problème avec un fichier QML minimal:

import QtQuick 2.0

Rectangle {
    width: 360; height: 600

  ListView {
    width: 350; height: 200
    anchors.centerIn: parent
    id: myList
    model: myModel
    highlight: highlightBar

    delegate: Item {
      width: 400; height: 20
      Text { text: name }

      MouseArea {
        id: mArea
        anchors.fill: parent
        onClicked: { myList.currentIndex = index; }
      }
    }
  }

  Component {
    id: highlightBar
    Rectangle {
      width: parent.width; height: 20
      color: "#FFFF88"
    }
  }

  ListModel {
      id: myModel
  }

  /* Fill the model with default values on startup */
  Component.onCompleted: {
      for(var i = 0; i < 100; i++) {
          myModel.append({ name: "Big Animal : " + i});
      }
  }
}

est-il possible de "limiter" un composant à ses bordures parentes ou de masquer le composant de surbrillance pendant le défilement?

2
demandé sur koopajah 2013-06-19 14:36:01

1 réponses

tel que rapporté par la documentation :

Note: Views ne pas activer le clip automatiquement . Si la vue n'est pas clippée par un autre élément ou par l'écran, il sera nécessaire de régler clip: true pour que les éléments out of view soient bien clippés.

par conséquent, ce que vous éprouvez est un comportement commun et vous devriez soit 1) clip la vue via autre Item s (par exemple un en-tête Rectangle et un pied de page Rectangle avec z:infinite ou simplement définir la propriété clip à true , c'est-à-dire

ListView{
   //...
   clip:true
   //...
}

Clipping a quelque Perfomance disavantages qui peuvent affecter grandement l'application comme il se développe. Par conséquent, son utilisation, en particulier en dehors du scénario des vues, doit être évaluée avec soin.

3
répondu Amit Tomar 2017-01-11 16:05:43