Я использую QTableView и QSqlTableModel для отображения данных из базы данных sqlite.В БД (и модели) есть столбец с полями, которые содержат либо пути, например: «/home/foo/bar.txt», либо ничего.Для этого столбца в представлении я хотел бы визуализировать один значок для элементов с путем и другой значок для элементов с ничем (и вообще не отображать фактические данные / путь в представлении).
I думаю, мне нужно настроить QStyledItemDelegate для отображения значков вместо данных, но staritemdelelgate из включенных примеров выделяет функцию редактора делегата (что мне не нужно), не проливая свет на то, как отображать QIcon(или, может быть, я просто скучаю по нему).Я просмотрел API, но мне неясно, как подкласс QStyledItemDelegate, или даже если мне нужно для этого варианта использования.
Некоторые рекомендации о том, является ли этот метод жизнеспособным, или пример того, как использоватьQStyledItemDelegate для визуализации значков для столбца (желательно на python) будет приветствоваться.
РЕДАКТИРОВАТЬ: Пост Петра решил проблему.Полная реализация ситуации, которую я описал, основана на решении Петра:
def data(self, index, role=QtCore.Qt.DisplayRole):
if index.column() == 2:
if role == QtCore.Qt.DecorationRole:
filename = super(MovieModel, self).data(index, QtCore.Qt.DisplayRole)
if not filename == '':
return self.yes_icon
else:
return self.no_icon
elif role == QtCore.Qt.DisplayRole:
return ''
#Other columns/roles:
return super(MovieModel, self).data(index, role)
Надеюсь, это поможет.