モデルの DisplayRole とは別に、追加のテキスト データを表示するテーブル コントロールを作成しています。他のすべての点で、テキストとセルの表示は同じでなければなりません。私が問題を抱えているのは、強調表示されたセルの正しい表示です。
現在、次のコードを使用しています。
void MatchDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
if (option.state & QStyle::State_Selected)
painter->fillRect(option.rect, option.palette.highlight());
painter->save();
QString str = qvariant_cast<QString>(index.data())+ "\n";
str += QString::number(qvariant_cast<float>(index.data(Qt::UserRole)));
if (option.state & QStyle::State_Selected)
painter->setBrush(option.palette.highlightedText());
else
painter->setBrush(qvariant_cast<QBrush>(index.data(Qt::ForegroundRole)));
painter->drawText(option.rect, qvariant_cast<int>(index.data(Qt::TextAlignmentRole)), str);
painter->restore();
}
ただし、結果は次のようになります。
テキストの色が正しくなく、セルの周りに破線がなく、コントロールがフォーカスを失うと、セルは既定のセルで描画されるように明るい灰色になるのではなく、青色のままです。
これらの問題を修正するには、ペイント コードをどのように変更する必要がありますか?