Поймать момент создания элемента в 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);
}
}