code: def mouseMoveEvent(self, event):
          
          if self.hoverMode() != XTreeWidget.HoverMode.NoHover:
              item  = self.itemAt(event.pos())
              col   = self.columnAt(event.pos().x())
              hitem = self.hoveredItem()
              hcol  = self.hoveredColumn()
  
              if (id(item), col) != (id(hitem), hcol):
                  if ( item ):
                      self._hoveredItem = weakref.ref(item)
                  else:
                      self._hoveredItem = None
  
                  self._hoveredColumn = col
  
                  rect  = self.visualItemRect(item)
                  hrect = self.visualItemRect(hitem)
  
                  rect.setWidth(self.viewport().width())
                  hrect.setWidth(self.viewport().width())
  
                  self.viewport().update(rect)
                  self.viewport().update(hrect)
  
          super(XTreeWidget, self).mouseMoveEvent(event)
docs: Tracks when an item is hovered and exited.
  
          :param      event | <QMoustEvent>