выделить элемент QML ListView при щелчке мышью

Я заметил, что в списке будет выделен первый элемент автоматически / по умолчанию, как я могу отключить его и выделить только тот элемент, который я выбрал при щелчке мышью?

Component {
id: highlight
Rectangle {
    width: 180; height: 40
    color: "lightsteelblue"; radius: 5
    y: list.currentItem.y
    Behavior on y {
        SpringAnimation {
            spring: 3
            damping: 0.2
        }
    }
  }
}

ListView {
   id: list
   width: 180; height: 200
   model: ContactModel {}
   delegate: Text {
    text: name 
        
      MouseArea{
          anchors.fill: parent
          onClicked: {
          list.currentIndex = index
         }
      }
    }

   highlight: highlight
   highlightFollowsCurrentItem: false
   focus: true
}

Я уже сделал часть мыши, но я застрял в отключении выделения при добавлении элемента.


person Mohammad A. Dkman    schedule 24.12.2020    source источник


Ответы (2)


По умолчанию для currentIndex установлено значение 0, поэтому первый элемент всегда начинает выделяться. Вы можете отключить это, просто инициализировав currentIndex значением -1.

ListView {
    currentIndex: -1
    ...
}
person JarMan    schedule 24.12.2020
comment
Спасибо за быстрый ответ, к сожалению, я попробовал ваше решение, но оно не помогло мне. он по-прежнему выделяет первый добавленный элемент. Кстати, я использую Qt версии 5.9 - person Mohammad A. Dkman; 27.12.2020
comment
Я протестировал его с помощью предоставленного вами кода, и он сработал. Может быть, ваше приложение делает что-то, чего нет в вашем примере кода? - person JarMan; 27.12.2020
comment
ну, в моем приложении я добавляю элементы в список динамически, но в примере, поскольку он использует его при инициализации, он работает нормально. так есть ли другой способ отключить его, пока элементы добавляются в список? @JarMan - person Mohammad A. Dkman; 28.12.2020
comment
Измените свой вопрос, чтобы предоставить лучший пример, демонстрирующий проблему. - person JarMan; 28.12.2020

Хорошо, после нескольких часов поиска я использовал сигнал onCountChanged, чтобы указать добавление элементов в список, а затем оставил ListView currentIndex на -1, поэтому код будет таким

onCountChanged: {
   list.currentIndex = -1
}
person Mohammad A. Dkman    schedule 29.12.2020