Название: [РЕШЕНО] Выделение части ячейки в таблице (делегаты) Отправлено: gil9red от Июнь 20, 2016, 15:22 У меня в таблице ячейки могут иметь два значения (иконки), которые могут отдельно выделяться.
Сделал делегат и для состояния выделения определял на какой половине ячейки находится курсор и менял положение рамки выделения, но такая реализация оказалась с тормозами -- при переключении внутри ячейки видна задержка и если после клика на одну половину переместить курсор, то выделение может оказаться на другой половине Мне нужна возможность выделения части ячейки с возможностью определять что выделено. В рабочем проекте использую: QTableView и QAbstractTableModel Привожу код и архив с минимальным проектом. celldelegate.h Код
celldelegate.cpp Код
widget.h Код
widget.cpp Код
Название: Re: Выделение части ячейки в таблице (делегаты) Отправлено: Igors от Июнь 21, 2016, 07:05 Ну использовать QCursor::pos вообще не годится - развалится хотя бы при скролле таблицы. Думается нужно запоминать индекс и "какая половинка" при нажатии и движении мыши (аттач)
Название: Re: Выделение части ячейки в таблице (делегаты) Отправлено: gil9red от Июнь 21, 2016, 11:46 Igors, ваш вариант классный -- рабочий и без багов :)
Я изначально ловил сигнал clicked и на него запоминал индекс, а в делегате уже из parent'а получал его, но возникали некоторые "артефакты". Потом уже работал с событиями mouse* А почему вы использовали QPersistentModelIndex для хранения, а не QModelIndex, название QPersistentModelIndex кое о чем намекает, да и в доке говорится, что он более безопасно хранит, но проблем QModelIndex вроде бы не было замечено Название: Re: Выделение части ячейки в таблице (делегаты) Отправлено: Igors от Июнь 21, 2016, 12:12 А почему вы использовали QPersistentModelIndex для хранения, а не QModelIndex, название QPersistentModelIndex кое о чем намекает, да и в доке говорится, что он более безопасно хранит, но проблем QModelIndex вроде бы не было замечено Напр грохнули содержимое таблицы - persistent станет невалидным, а обычный хз |