Recuperer la QCheckBox qui se trouve dans une cellule
Fermé
Mourad2009B
Messages postés114Date d'inscriptionlundi 23 août 2010StatutMembreDernière intervention19 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 :
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.
A voir également:
Recuperer la QCheckBox qui se trouve dans une cellule