滚动时隐藏ListView的突出显示

时间:2013-06-19 10:36:01

标签: qml qt5 qtquick2

我正在为UI构建基于Qt-Quick 2的Qt5应用程序。显示带有突出显示组件的ListView时出现问题。当我滚动ListView时,高亮矩形在ListView之外可见,我找不到避免它的方法。

以下是最小QML文件问题的示例:

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});
      }
  }
}

有没有办法将组件“限制”到其父边框或在滚动时隐藏高亮组件?

1 个答案:

答案 0 :(得分:3)

documentation报道:

  

注意:视图不会自动启用剪辑。如果视图没有被其他项目或屏幕剪切,则需要设置clip:true以便将视图外的项目剪裁得很好。

因此,您所遇到的是一种常见行为,您应该1)通过其他Item剪辑视图(例如标题Rectangle和页脚Rectangle z:infinite 1}}或简单地将clip属性设置为true,即

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

剪辑有一些perfomance disavantages,这会在应用程序增长时对其产生很大影响。因此,应仔细评估其用法,特别是在视图场景之外。