Сейчас делаю Drag and Drop на ветках дерева.
Стоит задача - подсвечивать элемент дерева, над которым проходит курсор (mouse over).
В dragMoveEvent() я могу получить элемент дерева, над которым проносят курсор:
void KnowTreeView::dragMoveEvent(QDragMoveEvent *event)
{
if( isDragableData(event) )
{
// Выясняется элемент дерева, над которым находится курсор
QModelIndex index=indexAt(event->pos());
...
И вот непонятно, как этот элемент, индекс которого известен, подсветить? Например, хочу понять как заменить ему цвет фона.
Сейчас вижу только монструозный путь: в модели данных завести еще одно поле для элемента (что-то типа bool cursorOver), для чего придется переопределять метод setData() модели. А в переопределенном методе data() модели возвращать нужный цвет фона при запросе роли Qt::BackgroundRole.
Но это как-то очень жутко получается - хранить флаг нахождения курсора мышы над элементом в данных элемента. Еще стоит вопрос как снимать этот флаг когда курсор покидает границы элемента.
Можно ли сделать выделение элемента, над которым находится курсор мыши, более простым способом?