J'utilise un QItemDelegate combiné avec l'indicateur IsUserCheckable de QTableView pour dessiner une colonne centrée sur la case à cocher. Tout a bien fonctionné jusqu'à ce que j'ai activé la sélection de ligne pour la table.Qt: case à cocher & QItemDelegate - ne pas cocher la case lorsque la sélection se produit
Lorsque la sélection se produit, l'arrière-plan de sélection bleu est la seule chose peinte et les cases à cocher ne sont plus visibles.
Ci-dessous est mon code que j'utilise pour peindre la case à cocher dans le délégué.
void CheckboxDelegate::drawCheck(QPainter* painter, QStyleOptionViewItem const& option, QRect const& rect, Qt::CheckState state) const
{
QSize size = check(option, option.rect, Qt::Checked).size();
QRect checkboxRect = QStyle::alignedRect(option.direction, Qt::AlignCenter, size, option.rect);
QItemDelegate::drawCheck(painter, option, checkboxRect, state);
}
Avez-vous des idées sur la raison pour laquelle cette fonction ne s'affiche pas correctement lors d'une sélection?
Vous avez vraiment besoin de poster plus de code. Je suppose que votre commande est foiré et que vous peignez le fond bleu ** après ** vous peignez la case – Robert
Ceci est le seul code pertinent qui peint n'importe quoi. J'imagine que le problème est lié à l'ordre de ma peinture comme vous l'avez mentionné, mais je ne sais pas comment mettre en œuvre les mesures appropriées à ce stade. En espérant que quelqu'un peut fournir un peu plus de perspicacité. – cweston