LINUX.ORG.RU

[QT3] фон для QListViewItem-а


0

0

Для 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); 
}

А вот как отрисовать фон для итема по всей ширине вьюпорта,
например как тут:

http://img218.imageshack.us/my.php?image=acdseeqh6.png

Если использовать:

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); 
} 

В результате рисуется необходимая область слева от итема, НО
затираются ветки дерева с плюсиками ('+'), т.е. во вьюпорте 
видны ТОЛЬКО итемы. 

Бьюсь с этой проблемой уже давно, чего только не перепробовал.  
Может кто-нибудь что-нибудь подскажет ? 
Спасибо.
anonymous

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.