Russian Qt Forum
Ноябрь 18, 2024, 14:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [QT3] фон для QListViewItem-а  (Прочитано 3187 раз)
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« : Февраль 15, 2007, 11:19 »

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

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

Бьюсь с этой проблемой уже давно, чего только не перепробовал.  Грустный
Может кто-нибудь что-нибудь подскажет ?
Спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.086 секунд. Запросов: 23.