У меня возникают трудности с добавлением делегата в мой 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);
}
}
То, что я хотел бы сделать, это объединить два, то есть иметь текст и флажки, а справа — значки, которые я поместил в делегат.
Может быть, кто-то может указать мне правильное направление здесь?
Приветствия.
Когда вы назначаете делегата представлению, представление перестает отображать элементы самостоятельно (фактически оно делает это с другим делегатом, который заменяется вашим). Так что он делегирует рендеринг вам. И вы запрограммировали делегата рисовать только значки. Вот почему вы видите только значки.
Если вам нужно нарисовать флажок и текст, вы должны нарисовать его самостоятельно или вызвать метод предков paint
где-то в вашей реализации. Так что если вы унаследовали SeqNavDelegate
от QStyledItemDelegate
вызов :
QStyledItemDelegate::paint(painter, option, index);