Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Leviathan от Сентябрь 27, 2010, 21:23



Название: QListView координаты мыши при клике на элемент
Отправлено: Leviathan от Сентябрь 27, 2010, 21:23
Привет всем!
Имеется QListView в котором делегат рисует элементы списка.
Как сделать так что бы при клике на элемент списка срабатывала функция, которая бы принимала координаты мыши?
Вариант со своим editor'ом который бы отображался всегда для всех элементов не подойдет, т.к. элементов тысячи, и скорость очень важна. Конечная цель - нарисовать пару маленьких прямоугольников прямо в элементе списка при нажатии на которые, срабатывали бы соответствующие события.


Название: Re: QListView координаты мыши при клике на элемент
Отправлено: crossly от Сентябрь 27, 2010, 21:48
mousePressEvent


Название: Re: QListView координаты мыши при клике на элемент
Отправлено: Leviathan от Сентябрь 27, 2010, 22:15
Ок, это все некрасиво получается, если mousePressEvent ловить у самого QListView


Название: Re: QListView координаты мыши при клике на элемент
Отправлено: Leviathan от Сентябрь 28, 2010, 18:51
значит ответа нет...


Название: Re: QListView координаты мыши при клике на элемент
Отправлено: MoPDoBoPoT от Сентябрь 28, 2010, 20:57
Ок, это все некрасиво получается, если mousePressEvent ловить у самого QListView
Вообще-то еще есть installEventFilter().
Можно еще соединить сигнал QAbstractItemView::clicked(QModelIndex &) со слотом в котором координаты мыши получить через QCursor::pos()


Название: Re: QListView координаты мыши при клике на элемент
Отправлено: crossly от Сентябрь 28, 2010, 21:47
вполне возможно что пока дойдет до слота курсора в нужно месте уже не будет...


Название: Re: QListView координаты мыши при клике на элемент
Отправлено: Leviathan от Сентябрь 28, 2010, 22:35
Вообще-то еще есть installEventFilter().
Можно еще соединить сигнал QAbstractItemView::clicked(QModelIndex &) со слотом в котором координаты мыши получить через QCursor::pos()

Проблема в том что нужно определить координаты относительно самого элемента списка, расчитывать их магией очень сложно, и будет очень криво.
Единственное что пока удалось, так это определить в каком конкретно элементе происходит клик:
Код:
void MyListView::mouseClickEvent(QMouseEvent *event)
{
   QAbstractItemModel *m(model());
   if(m)
      QModelIndex index = indexAt(event->pos());
   QListView::mouseClickEvent(event);
}


Название: Re: QListView координаты мыши при клике на элемент
Отправлено: Kolobok от Сентябрь 29, 2010, 09:31
Это ты QAbstractItemView::clicked( const QModelIndex & index ) изобрел.