Я - разработчик NEWBIE на python, это мой первый сценарий на питоне. Я добавил QProgressBar в QTableview (QAbstractTableModel) как QItemDelegate, и он работает. QProgressBar действительно отображался, но он не может автоматически обновляться при редактировании или сортировке QTableview. Цвет фона QItemDelegate, выравнивание, редактирование не соответствуют роли? любая идея? Нужно ли использовать setmodeldata или seteditordata? любой пример в этом случае?Как обновить (setvalue, сортировка, редактирование, цвет фона) QProgressBar (QitemDelegate) внутри QTableview (QAbstractTableModel)
вот класс QAbstractTableModel
def data(self, index, role):
col = index.column()
row = index.row()
if not index.isValid():
return QVariant()
elif role == Qt.BackgroundColorRole and row%2 == 0 :
return QVariant(QColor(60,60,60))
elif role == Qt.DisplayRole and col != 3 :
return QVariant(self.arraydata[row][col])
elif role == Qt.EditRole and col != 3 :
return QVariant(self.arraydata[row][col])
elif role == Qt.ToolTipRole :
return QVariant("tool tips")
elif role == Qt.TextAlignmentRole:
return QVariant(Qt.AlignCenter | Qt.AlignCenter)
вот код делегата:
class progressDelegate(QItemDelegate):
def __init__(self, parent ):
QItemDelegate.__init__(self, parent)
self.tb = self.parent().shotslistTable
self.tm = self.parent().tm
def paint(self, painter, option, index):
self.pbar = QProgressBar(self.parent())
col = index.column()
row = index.row()
self.pbar.setMinimum(0)
self.pbar.setMaximum(100)
self.pbar.setValue (int(self.tm.arraydata[row][col]))
self.pbar.setMaximumHeight(24)
if not self.tb.indexWidget(index):
self.tb.setIndexWidget(
index,
self.pbar
)