Problème méthode paint du délégué



  • Bonjour,
    Dans la méthode paint d'un délégué, dans le code suivant, la valeur "value = index.model()......" reste toujours à 0 quand je clique dans la cellule.
    Voici le code, merci de votre aide.

    void Delegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
    {
          if (index.column() == 1)
        {
            painter->save();
            const int value = index.model()->data(index, Qt::DisplayRole).toInt();
            QRect rect(option.rect);
            const int width = (value * rect.width()) / 100;
            rect.setWidth(width);
            QColor c;
            if (value <= 20)
            {
              c = Qt::red;
            }
            else if (value <= 50)
            {
                c = QColor(240, 96, 0);
            }
            else
            {
                c = Qt::green;
            }
    
            painter->fillRect(rect, c);
            QTextOption o;
            o.setAlignment(Qt::AlignCenter);
            painter->drawText(option.rect, QString("%1 %").arg(value), o);
    
            painter->restore();
        }
        else
        {
            QStyledItemDelegate::paint(painter, option, index);
        }
    }
    
    


  • Salut,

    Qu'elle est la valeur attendue et est-elle bien fixée dans le model avant l'appel du paint ?


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.