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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: не работает paintEvent у QListView  (Прочитано 2923 раз)
izoomer
Гость
« : Январь 04, 2007, 11:42 »

переопределил paintEvent у своего вивера от QListView вот таким образом
Код:

void myView::paintEvent(QPaintEvent *event)
{
    QPainter painter(viewport());
    QPen pen(Qt::green, 10, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
    painter.setPen(pen);
    painter.drawRect(rect());
    painter.setRenderHint(QPainter::Antialiasing);

    int step=10;

    QList <int> indexesRendered;

     /* indexesRendered содержит номера строк для прорисовки */
     /* например : */
     /*..... 13,14,15,16,17,0,1,2,3,4,5,6,7,8 ........ текущая 1 */

    QModelIndex centralItem = currentIndex();

    foreach (int it , indexesRendered){
        QStyleOptionViewItem option = viewOptions();
    // если it == -1 то строка пустая и  никакой делегат не рисуется
        if ( it >= 0) {
            QModelIndex labelIndex = model()->index(it, 0, rootIndex());
            if ( centralItem == labelIndex ){
                option.rect =  QRect(10,132,200,66);
                option.state |= QStyle::State_Selected;
                step+=66;
            } else {
                option.rect =  QRect(10,step,200,22);
                step+=22;
            }
            itemDelegate()->paint(&painter, option, labelIndex);
        } else {
            step+=22;
        }
    }


при старте все рисуется так как надо но при навигации по строкам , т.е. изменении currentIndex ничего не меняется. Почему ? Что не так ?

добавлено спустя 8 минут:

 забыл
QT-4.2 Linux
Записан
Dendy
Гость
« Ответ #1 : Январь 04, 2007, 12:08 »

Потому что View не получает собьІтие отрисовки, что логично. ОтрисовьІвается его viewport().
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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