1

テーブルがあり、qt ドキュメントの例に従ってカスタム デリゲートを追加しようとしています。ただし、行が選択されている場合、背景色は正しいように見えますが、オーバーレイが表示されていないように見えます (評価セルと行の残りの部分との間の青色の背景を持つ列の違いに注意してください)。標準デリゲートのように背景を描画する最も簡単な方法は何ですか?

QItemDelegateがあるようですが、 にはそのdrawBackgroundような機能はありませんQStyledItemDelegate。残念ながらdrawBackground、左のセルに表示されるわずかに明るい長方形 (背景よりも上下が 1 ピクセル小さい) も省略されています。

ここに画像の説明を入力

4

1 に答える 1

0

Qt StarDelegate の例に従ってデリゲートをモデル化したと言いました。実験として。このコードに従ってデリゲートをモデル化してみてください:

void StarDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
    QStyledItemDelegate::paint(painter, option, index);
    if (index.data().canConvert<StarRating>()) {
        StarRating starRating = qvariant_cast<StarRating>(index.data());
        QStyledItemDelegate::paint(painter, option, index);
        starRating.paint(painter, option.rect, option.palette,
            StarRating::ReadOnly);
    }
}

これは Qt の例の StarDelegate でもありますが、最初にテーブル セルに関係なくデフォルトの背景が描画されるように少し変更しました。次に、StarRating セルの場合は、星です。この方法でデフォルトのスタイルの背景が得られることを願っています。保証はありません。私は自分で試していません。:-)

于 2015-04-28T16:00:39.453 に答える