Делегировать удаление текста в QTreeView с использованием QStandardItemModel

0

У меня возникли трудности с добавлением делегата в мой QTreeView. Я добавил некоторые QStandardItems через модель, которая отлично работает, но когда я добавляю делегата, текст стирается, и только значки видны.

Это код, который я использую для своего делегата:

void SeqNavDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
       const QModelIndex &index) const
{
    if (index.column() == 0 && option.state & QStyle::State_Enabled)
    {
        const QIcon icon(QLatin1String(":/SeqNavMenu/images/green.png"));

        QRect iconRect(option.rect.right() - option.rect.height(),
                   option.rect.top(),
                   option.rect.height(),
                   option.rect.height());

        icon.paint(painter, iconRect, Qt::AlignRight);
    }
}

То, что я хотел бы сделать, это объединить два, то есть иметь текст и флажки, а справа - значки, которые я разместил в делегате.

Может быть, кто-то может указать мне в правильном направлении здесь?

Приветствия.

Теги:
qt
qtreeview
qstyleditemdelegate
qstandarditemmodel

1 ответ

1
Лучший ответ

Когда вы назначаете делегата представлению, представление останавливает объекты рендеринга сами по себе (фактически оно делает это с другим делегатом, который заменяется вашим). Поэтому он делегирует вам рендеринг. И вы запросили делегата только рисовать значки. Вот почему вы видите только значки.
Если вам нужно сделать флажок и текст, а вы должны сделать это самостоятельно или вызвать метод предков paint где - то в вашей реализации. Итак, если вы унаследовали SeqNavDelegate от QStyledItemDelegate звоните:

QStyledItemDelegate::paint(painter, option, index);
  • 0
    @simpsons Также предлагаю вам поэкспериментировать с QStyleOptionViewItem :: position. Я думаю, что если вы переопределите QAbstractItemView::viewOptions и измените option.decorationPosition на QStyleOptionViewItem::Right тогда вам вообще не нужно будет использовать делегат. Вам нужно только вернуть значок в data методе модели , когда DecorationRole запрашиваются.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню