IMO you just need to change QAbstractItemView::SelectionBehavior property to QAbstractItemView::SelectRows. AFAIR this causes both the whole row to be selected and whole row to be indicated while dragging. No need for any custom code.