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

У меня возникают трудности с добавлением делегата в мой 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);
}
}

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

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

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

0

Решение

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

QStyledItemDelegate::paint(painter, option, index);
1

Другие решения


По вопросам рекламы [email protected]