[英]Delegate erasing text in QTreeView using 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);
}
}
我想做的就是将两者结合起来,也就是说,有文本和复选框,在右边有我放置在委托中的图标。
也许有人可以在这里指出正确的方向?
干杯。
当您将一个委托分配给一个视图时,该视图会自行停止渲染项目(实际上是使用另一个委托(由您的委托代替)来渲染项目)。 因此,它将渲染委托给您。 然后,您将委托编程为仅绘制图标。 因此,您只能看到图标。
如果您还需要绘制一个复选框和一个文本,则需要您自己绘制它,或者在实现中的某个地方调用祖先方法paint
。 因此,如果您从QStyledItemDelegate
调用继承了SeqNavDelegate
:
QStyledItemDelegate::paint(painter, option, index);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.