0

QTableView の IsUserCheckable フラグと組み合わせて QItemDelegate を使用して、中央のチェックボックス列を描画しています。テーブルの行選択を有効にするまで、すべて正常に機能しています。

選択が行われると、青色の選択背景だけがペイントされ、チェックボックスは表示されなくなります。

以下は、デリゲート内からチェックボックスを描画するために使用する私のコードです。

void CheckboxDelegate::drawCheck(QPainter* painter, QStyleOptionViewItem const& option, QRect const& rect, Qt::CheckState state) const
{
    QSize size = check(option, option.rect, Qt::Checked).size();
    QRect checkboxRect = QStyle::alignedRect(option.direction, Qt::AlignCenter, size, option.rect);
    QItemDelegate::drawCheck(painter, option, checkboxRect, state);
}

選択が行われたときにこれが正しく描画されない理由についてのアイデアはありますか?

4

1 に答える 1

0

投稿されたコードが不足しているため、私の答えが役立つと確信するのは難しいですが、ペインターが QRect をペイントするだけでなく、QItemDelegate もペイントすることが問題だと思います。これは、QRect の色を具体的に指定しない限り、セル全体と同じ色になるように塗りつぶすことを意味します。

これが true の場合、QRect はまだそこにありますが、セルの残りの内容と同じ色です。

次のようにして、QRect のペインターの色を変更できます。painter.setPen(QColor.red);

繰り返しますが、作業するコードはあまりありませんが、チェックを別の色にしたい場合は、別の色に設定する必要があります。

より多くのコードを提供していただければ、より明確にお答えできます。

于 2011-07-20T16:05:10.150 に答える