2012-02-10 3 views
3

J'essaie d'obtenir l'arrière-plan parent et de le définir comme couleur d'arrière-plan de la case à cocher. J'ai cette méthode de peinture qui drows la case à cocher:quel est le moyen de dessiner QStyleOptionButton QStyle :: CE_CheckBox fond?

void paint(QPainter* painter, 
      const QStyleOptionViewItem& option, 
      const QModelIndex &index) const 
{ 
    // Get item data 
    bool value = index.data(Qt::UserRole).toBool(); 
    QString text = index.data(Qt::DisplayRole).toString(); 

    // Fill style options with item data 
    const QStyle *style = QApplication::style(); 
    QStyleOptionButton opt; 
    opt.state |= value ? QStyle::State_On : QStyle::State_Off; 
    opt.state |= QStyle::State_Enabled; 
    opt.text = text; 
    opt.rect = option.rect; 

    // Draw item data as CheckBox 
    style->drawControl(QStyle::CE_CheckBox,&opt,painter); 
} 

mais comment puis-je définir la couleur d'arrière-plan de cette case?

Répondre

0

Mise à jour:

Vous pouvez plutôt essayer d'initialiser le QStyleOptionButton à partir du widget, de cette façon, vous obtiendrez la palette du widget.

QStyleOptionButton opt; 
opt.initFrom(this); 

suggestion ancienne:

Changer opt.backgroundBrush pourrait fonctionner:

opt.backgroundBrush = QBrush(QColor(0, 0, 0, 102)); 

ou le réglage opt.backgroundColor

+0

erreur C2039: 'backgroundBrush': n'est pas membre de 'QStyleOptionButton' erreur C2039: 'backgroundColor': n'est pas un membre de 'QStyleOptionButton' – user63898

+0

merci mais toujours pas bien: erreur C2664: 'QStyleOption :: initFrom': impossible de convertir le paramètre 1 de 'const CheckBoxListDelegate * const' en 'const QWidget *' – user63898

Questions connexes