Я полагаю, что вы ищете одну из следующих функций (в зависимости от того, какой класс представления вы используете):
QTableWidget::setCellWidget( int, row, int column, QWidget *widget );
QTreeWidget::setItemWidget( QTreeWidgetItem *item, int column, QWidget *widget );
QListWidget::setItemWidget( QListWidgetItem *item, QWidget *widget );
Это позволит вам отобразить произвольный виджет в нужном месте,не требуется никаких действий с делегатами.
Обратите внимание, что эти функции доступны только в версиях этих представлений "Виджет" (например, QTreeWidget в отличие от QTreeView).Однако в QAbstractItemView есть функция setIndexWidget (), которую также можно использовать.