crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в [РЕШЕНО] Как определить в какой айтем в ListView тыкнул пользователь?
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Rocky Дата 24.2.2011, 15:44
  Решение: MouseArea нужно объявлять не в самом ListView, а в делегате. И через него менять индекс модели при клике.
Rocky Дата 22.2.2011, 15:49
  Ну, боюсь тут это не поможет...
Dovgon Дата 22.2.2011, 14:57
  Используй сигнал clicked(const QModelIndex &index).
Rocky Дата 22.2.2011, 14:13
  Всем привет!

Есть ListView. В нем есть много айтемов. Хочу сделать чтобы при клике мыши на элемент списка он становился активным (т.е. списку установить текущий индекс на индекс "кликнутого" айтема). Вопрос: как определить индекс айтема, по которому кликнул пользователь? Вот я пробовал так:
ListView {
..........
        MouseArea {
        anchors.fill: parent
        onEntered: parent.focus = true

        onClicked: {
            var currentIdx = parent.indexAt(mouseX, mouseY);
            if (currentIdx != -1) parent.currentIndex = currentIdx
        }
    }
}

Но это работает, если элементы списка не "прокручены". Т.е. если айтемы помещаются в сам список так, чтобы для получения доступа к последним айтемам не нужно было проскроллить этот список - то так работает.. А иначе не работает, потому что реальное положение айтема в списке будет определяться offsetY + mouseY. А как получить этот offsetY (смещение прокрутки по вертикали) непонятно.... Или можно как-то по-другому решить проблему?

Спасибо!
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 23:48