2016-11-09 16 views
0

私はフォーラムやこのテーマについての議論がたくさんあることを知っていますが、この問題の解決策を見つけることができませんでした。QTableViewは特定の行の色を設定します

私はモデルを使用するQTableViewを持っています。いくつかの特定の行の背景色をモデルを通じて、より正確にはdata関数から変更できるようにする必要があります。

QVariant CCustomModel::data(const QModelIndex &index, int role) const 
{ 
    if (role == Qt::DisplayRole) 
    { 

    switch (index.column()) 
    { 
     case colName:   return QVariant(QString::number(1)); 
     case colAdress:  return QVariant(QString::number(2)); 
     case colGender:  return QVariant(QString::number(3)); 
     case colTelephone: return QVariant(QString::number(4)); 
     default: 
     return QVariant(); 
    } 
    } 

    if(role == Qt::BackgroundColorRole) //also tried Qt::BackgroundRole and Qt::ForegroundRole 
    { 
    return QVariant(QColor(Qt::red)); 
    } 
    return QVariant(); 
} 

これは簡単ではありません。数値は表示されますが、背景色は依然として基本色です。ここに解決策はありますか?

+0

あなたが何らかの形でモデルから要求される役割を制限しましたか?コードは実際にステートメントに到達し、それは単に赤を描画しませんか?あるいは、あなたは 'BackgroundColorRole'の役割を要求しませんか? – Hayt

+0

私はテストし、私はいつもその役割の要求を得る。私は選択可能または編集可能ではないフラグだけに制限がありますが、これは問題ではありません。 – student

+0

またQVariant(QColor(Qt :: red))を返します。役割チェックの外では、私は各セルに小さい赤い四角形とそれの隣の数字を受け取りますが、それはそれです。 – student

答えて

0

これを試してみてください:

if(role == Qt::BackgroundRole) 
    { 
     return QBrush(QColor(Qt::red)); 
    } 
関連する問題