Поймать момент создания элемента в QTreeView, чтобы установить пользовательский виджет

У меня есть пользовательская модель, унаследованная от QAbstractItemModel, и пользовательское представление, унаследованное от QAbstractItemView. Модель представляет собой обертку данных, организованную в виде дерева. Когда модель изменяется, она испускает необходимые сигналы, чтобы уведомить представление об изменениях. Представление имеет делегат элемента по умолчанию.

А теперь я хочу создать собственный виджет для каждого элемента в представлении и установить его с помощью QAbstractItemView::setIndexWidget(). Как я могу поймать и обработать каждое создание элемента в представлении, чтобы сделать это?

1 ответ

Вам лучше использовать Itemdelegate.

class MyItemDelegate: public QAbstractItemDelegate
{
Q_OBJECT

  QWidget *widget;

public:
  MyItemDelegate(QObject *p):QAbstractItemDelegate(p)
  {
    //create widget
  }


  void paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const
  {
      //initialize painting widget
      widget->render(painter);
  }

}
Другие вопросы по тегам