задач вообще несколько:
1. Необходимо из QTableView убрать горизонтальные линии сетки;
2. Реализовать обработчики мыши (что бы подсвечивать строки при наведении курсора, при клике тоже надо менять цвет строк)
Может еще что понадобится так вроде все пока.
Я просто посмотрел в исходнике где сетка рисуется (метод paintEvent в QTableView), ну и подумал если я его чуть почиркаю то получу то что мне надо. Хотел все родное оставить только чуть изменить, а никак, т.к. он пользует методы QTableViewPrivate.
Да и с окраской всей строки при наведении курсора, и при клике мышой не совсем ясно как быть, т.к. через делегаты не покатит, там только ячейку красить и то по состоянию, как то криво это.
Уже задавал подобный вопрос но ответа так и не получил.
Мне бы только путь подсказать, потому что пока кроме как через наследование не вижу....
1) Насколько я понял ты в исходниках покопался, так что кратко.
Переопределяем у QTableView paintEvent
Вызываем в своем сперва QTableView::paintEvent(event); таким образом делаем оригинальную отрисовку!
Далее прерисовываем сетку поверх, как это сделать:
- берем код QTableView paintEvent
- комментируем все что не относится к отрисовке сетки
- Видим например verticalHeader определенный как
const QHeaderView *verticalHeader = d->verticalHeader;
Мы делаем
const QHeaderView *verticalHeader = verticalHeader();
- И аналогично с остальной ерундой.
- Проверили работоспособность, удалили все закомментированное
2) Насколько я понял подсветить ячейку при наведении на нее мыши через делегат ты можешь. На вскидку способ подсветить строку:
- Делаем свою модель и делегат
- Кастим(приводим) в делегате модель к своей
- Определяем в делегате что нужно подсветить ячейку
- Вызываем у своей модели спец метод которому указываем номер строки для подсветки
- В этом методе модель выставит флаг для этой строки и сделает emit dataChanged этим ячейкам и ячейкам строки у котрых был флаг раньше
- В делегате проверяем флаг у ячейки и взависимости от флага делаем подсветку или нет
- Не забыть обработать выход мыши за пределы всех ячеек(убрать посветку)