[РЕШЕНО] Как определить в какой айтем в ListView тыкнул пользователь? |
Здравствуйте, гость ( Вход | Регистрация )
[РЕШЕНО] Как определить в какой айтем в ListView тыкнул пользователь? |
Rocky |
22.2.2011, 14:13
Сообщение
#1
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
Всем привет!
Есть ListView. В нем есть много айтемов. Хочу сделать чтобы при клике мыши на элемент списка он становился активным (т.е. списку установить текущий индекс на индекс "кликнутого" айтема). Вопрос: как определить индекс айтема, по которому кликнул пользователь? Вот я пробовал так:
Но это работает, если элементы списка не "прокручены". Т.е. если айтемы помещаются в сам список так, чтобы для получения доступа к последним айтемам не нужно было проскроллить этот список - то так работает.. А иначе не работает, потому что реальное положение айтема в списке будет определяться offsetY + mouseY. А как получить этот offsetY (смещение прокрутки по вертикали) непонятно.... Или можно как-то по-другому решить проблему? Спасибо! Сообщение отредактировал Rocky - 24.2.2011, 15:43 |
|
|
Dovgon |
22.2.2011, 14:57
Сообщение
#2
|
Студент Группа: Участник Сообщений: 92 Регистрация: 5.1.2011 Пользователь №: 2325 Спасибо сказали: 3 раз(а) Репутация: 0 |
Используй сигнал clicked(const QModelIndex &index).
|
|
|
Rocky |
22.2.2011, 15:49
Сообщение
#3
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
Ну, боюсь тут это не поможет...
|
|
|
Rocky |
24.2.2011, 15:44
Сообщение
#4
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
Решение: MouseArea нужно объявлять не в самом ListView, а в делегате. И через него менять индекс модели при клике.
|
|
|
Текстовая версия | Сейчас: 27.12.2024, 1:03 |