【发布时间】:2014-08-22 10:13:20
【问题描述】:
我在 Qtreeview 中使用了一个委托,它只在文本旁边显示一个图标。
我希望能够做的是单击列表中的一项并仅更改该一项的图标。我一直在查看一些示例,但它们都使用了我不想使用的编辑器。我希望更改在项目的点击操作上自动发生。
我猜我将不得不使用我单击的项目的索引向我的委托类添加一个新函数,这很好,但是如何更改图标?我是否必须用新图标调用绘画功能才能绘画?
这是我正在使用的委托:
void SeqNavDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
QStyledItemDelegate::paint(painter, option, index);
if (index.column() == 0 && option.state & QStyle::State_Enabled)//State_MouseOver)
{
const QIcon icon(QLatin1String(":/SeqNavMenu/images/grey.png"));
QRect iconRect(option.rect.right() - option.rect.height(),
option.rect.top(),
option.rect.height(),
option.rect.height());
icon.paint(painter, iconRect, Qt::AlignRight);
}
}
我只是用不同的图标路径重新实现这个功能吗?
感谢您的帮助。
【问题讨论】: