Потому что все, что вы делаете, это рисуете QLabel. QLabel не «существует» в представлении модели, к которому вы обращаетесь, он отображается только в том состоянии, в котором вы его создали .
Вы должны использовать
QStyle::drawControl( ControlElement element,
const QStyleOption* option,
QPainter* painter,
const QWidget* widget = 0 ) const;
чтобы нарисовать этикетку. Не создавайте новый QLabel
каждый раз, когда вам нужно нарисовать его, это не только неэффективно, вы также создали причину утечки памяти, не удаляя ее ...
Что еще более важно, выбор текста действительно должен быть частью делегата редактора, поэтому вы должны переопределить
QWidget* QAbstractItemDelegate::createEditor( QWidget* parent,
const QStyleOptionViewItem& option,
const QModelIndex& index ) const;
чтобы вернуть виджет, который может отображать редактируемый форматированный текст.