2013-06-19 1 views
2

Я создаю приложение Qt5 на основе Qt-Quick 2 для пользовательского интерфейса. У меня проблема при отображении ListView с компонентом выделения. Когда я просматриваю 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}); 
     } 
    } 
} 

Есть ли способ «ограничить» компонент для его родительских границ или скрытия компонента выделения во время прокрутки?

ответ

3

Как сообщает documentation:

Примечание: Виды не позволяют клип автоматически. Если представление не обрезается другим элементом или экраном, необходимо установить clip: true, чтобы элементы из вида были обрезаны красиво.

Следовательно, то, что вы испытываете это обычное поведение, и вы должны либо 1) клип вид через другие Item с (например, заголовок Rectangle и нижний колонтитулы Rectangle с z:infinite или просто установить clip свойство true, т.е.

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

Отсечение имеет некоторые perfomance disavantages, которые могут значительно повлиять на применение, как он растет. Таким образом, его использование, особенно вне сценария взглядов, должны быть тщательно оценены.

+2

Теперь кажется очевидным, но я потратил целый день, пытаясь найти столько свойств, сколько мог найти, и полностью пропустил этот, так что спасибо! – koopajah

+3

@koopajah Случается лучшим из нас :) Просто предложение: когда вы не можете найти конкретное свойство, попробуйте изучить элемент 'item' qml. Скорее всего, вы его найдете. –

+0

По умолчанию это свойство должно быть истинным. Я потерял 2 часа из-за этого :( –

 Смежные вопросы

  • Нет связанных вопросов^_^