Heres the exact code I used, just try it:

In my main file:
MouseHoverFilter* mhf;
MyList->setMouseTracking(true);
mhf = new MouseHoverFilter;
MyList->installEventFilter(mhf);

Filters.h :

class MouseHoverFilter : public QObject {
Q_OBJECT
public:
MouseHoverFilter(QObject* parent);
QTreeWidgetItem* prev;
protected:
bool eventFilter(QObject *obj, QEvent *event);
};

MouseHoverFilter::MouseHoverFilter(QObject* parent = 0) : QObject(parent) {
prev = 0;
}

bool MouseHoverFilter::eventFilter(QObject *obj, QEvent *event){
if(event->type() == QEvent::MouseMove){
QMouseEvent* mouseEvent = static_cast<QMouseEvent*>(event);
QTreeWidget* qtw = static_cast<QTreeWidget*>(obj);
QTreeWidgetItem* current = qtw->itemAt(mouseEvent->pos());
if(current && current != prev && current->childCount() == 0){
if(prev)prev->setBackground(0, qtw->palette().base());
if(prev)prev->setBackground(1, qtw->palette().base());
if(prev)prev->setBackground(2, qtw->palette().base());
current->setBackground(0, QColor(193, 235, 255));
current->setBackground(1, QColor(193, 235, 255));
current->setBackground(2, QColor(193, 235, 255));
prev = current;
}
return true;
} else {
QObject::eventFilter(obj, event);
}
return false;
}
#include "Filters.moc"