Recuperer la QCheckBox qui se trouve dans une cellule

Fermé
Mourad2009B Messages postés 114 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 19 janvier 2023 - 29 avril 2015 à 16:35
Bonjour à tous,
Je développe en Qt et C++, sous windows Seven.
Voilà mon problème : J'ai un QTableWidget, auquel j'ai affecté un Deleguer pour le mettre en forme
J'ai donc réimplémenter les fonctions suivantes :
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;
void setEditorData(QWidget *editor, const QModelIndex &index) const;
void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;
void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const;



Sachant que dans mon QTableWidget, j'ai 2 colonnes la première contient un QCheckBox, et la deuxième contient juste du texte
Mon objectif est de récupérer la QCheckBox, pour pouvoir tester sa valeur, si elle est cochée je change la couleur de ma cellule,
le problème c'est que je ne sais pas comment faire pour récupérer la Valeur de la QchecBox dans la fonction paint() afin de changer la couleur de la cellule corespondante.

Voici un échantillon de ma foction paint
void Deleguer_Perso_Categorie_Graphe::paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
//On recupère le texte de l'index
QString text = index.model()->data(index, Qt::DisplayRole).toString();
//On modifie une option d'affichage du texte
QStyleOptionViewItem myOption = option;
//On définit la taille de police
int taillePolice =10;
//On utilise ces variables pour décaler le texte des bords gauche et droit.
QRect rectDecalerDeLaGauche(myOption.rect.x()+10, myOption.rect.y(), myOption.rect.width(), myOption.rect.height());
QRect rectDecalerDeLaDroite(myOption.rect.x(), myOption.rect.y(), myOption.rect.width()-10, myOption.rect.height());
//On sauvegarde le painter pour le restauré à la fin
painter->save();


//On définit un pinceau
QBrush pinceau = QBrush(QColor(29,99,204));
//On définit un crayon
QPen crayon = QPen(QColor(29,99,204));
//Si c'est une ligne impaire
if((index.row() % 2) != 0)
{
//Cette mise en page concerne toute les cellules
//On définit la couleur du pinceau
pinceau.setColor(QColor(72,211,255));
//On définit un crayon
crayon.setColor(QColor(72,211,255));
painter->setPen(crayon);
//Couleur de fond
painter->setBrush(pinceau);
painter->drawRect(option.rect);
//On définit la police du painter
painter->setFont(QFont("Tahoma",taillePolice,1));
crayon.setWidth(0);
crayon.setColor(QColor(0,0,0));
painter->setPen(crayon);
//On écrit le texte
painter->drawText(rectDecalerDeLaGauche, Qt::AlignLeft| Qt::AlignVCenter, text);
}

Merci d'avance pour votre aide.