Для QListViewItem-а можно задать свой фон, переопределив paintCell():
void MListViewItem::paintCell(QPainter *p, const QColorGroup &cg,
int column, int width, int align)
{
QColorGroup cc = cg;
// фон будет красным, если надо
if(shouldBeRed())
cc.setColor(QColorGroup::Base, Qt::red);
// нарисовать
QListViewItem::paintCell(p, cc, column, width, align);
}
А вот как отрисовать фон для итема по всей ширине вьюпорта, например как в ACDSee ?
Если использовать
void MListViewItem::paintCell(QPainter *p, const QColorGroup &cg,
int column, int width, int align)
{
QColorGroup cc = cg;
// простой хак для отрисовки региона слева от элемента
p->save();
p->translate(-100, 0);
p->fillRect(0,0,100,16,gray);
p->restore();
if(shouldBeRed())
cc.setColor(QColorGroup::Base, Qt::red);
QListViewItem::paintCell(p, cc, column, width, align);
}
В результате рисуется необходимая область слева от итема, НО
затираются ветки дерева с плюсиками ('+'), т.е. во вьюпорте
видны ТОЛЬКО итемы.
Бьюсь с этой проблемой уже давно, чего только не перепробовал.
Может кто-нибудь что-нибудь подскажет ?
Спасибо.