Это работает довольно хорошо, но я заметил один сценарий, когда это не удается. Прокрутка.
Если в виджете есть полосы прокрутки, вы можете оставить курсор на месте и использовать колесо прокрутки, которое не будет обновлять курсор, даже если элементы под ним изменяются. Существует WheelEvent, но, похоже, он вызывается только в начале операции прокрутки.
Код: Выделить всё
void TreeView::mouseMoveEvent(QMouseEvent* event)
{
QModelIndex index = indexAt(event->pos());
if (index.isValid() && isItemClickable(index))
setCursor(Qt::PointingHandCursor);
else
setCursor(Qt::ArrowCursor);
QTreeView::mouseMoveEvent(event);
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... underneath
Мобильная версия