2012-02-10 43 views
3

我想獲取父背景並將其設置爲複選框背景色。我有drows複選框這種塗料方法:什麼是繪製QStyleOptionButton QStyle :: CE_CheckBox背景的方法?

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); 
} 

但我要如何設置此複選框的背景顏色?

回答

0

更新:

你可以嘗試,而不是從控件初始化的QStyleOptionButton,這樣你會得到widget的調色板。

QStyleOptionButton opt; 
opt.initFrom(this); 

老建議:

更改opt.backgroundBrush可能的工作:

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

或設置opt.backgroundColor

+0

錯誤C2039: 'backgroundBrush':是不是成員'QStyleOptionButton' 錯誤C2039:'backgroundColor':不是'QStyleOptionButton'的成員 – user63898 2012-02-10 13:02:38

+0

謝謝,但仍不好: 錯誤C2664:'QStyleOption :: initFrom':不能將參數1從'const CheckBoxListDelegate * const'轉換爲'const QWidget *' – user63898 2012-02-10 17:03:56