Здравствуйте! Есть QTableWidget. Для некоторых колонок и строк есть делегаты. В делегатах данные динамически изменяются. Чтобы отобразить изменение этих данных помимо добавление их в делегат приходится еще в цикле проходить по ячейкам таблицы и изменять QTableWidgetItem. Хочется не ходить по ячейкам в цикле. Для того, чтобы данные после добавления в делегат сразу отображались, я так понимаю, нужно переопределить виртуальный метод
paint(). Никак не могу понять как это сделать.
В качестве примера использовал вот этот
материал.
Вот что у меня получилось:
void ComboBoxDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QString itemText = index.data().toString();
QStyleOptionViewItem viewItem;
QRect r = option.rect;
r.setHeight( option.rect.height() );
r.moveCenter( option.rect.center() );
viewItem.rect = r;
viewItem.displayAlignment = Qt::AlignCenter;
viewItem.text= itemText;
QItemDelegate::paint( painter, option, QModelIndex() );
}
Падает с предупреждениями:
ASSERT: "index.isValid()" in file itemviews\qitemdelegate.cpp, line 392
QWidget::repaint: Recursive repaint detected
ASSERT: "index.isValid()" in file itemviews\qitemdelegate.cpp, line 392
D:\Qt_project\new-conf\new_conf\debug\new_conf.exe завершился с кодом 3