2010-12-14 13 views
0

QTableViewのIsUserCheckableフラグと組み合わせたQItemDelegateを使用して、中央揃えのチェックボックス列を描画しています。私はテーブルの行選択を有効にするまで、すべて正常に動作しています。Qt:チェックボックスと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); 
} 

選択時に正しく塗装されない理由は何ですか?

+1

本当にコードを投稿する必要があります。私はあなたの注文がうんざりしていると思うし、**あなたはチェックボックスをペイントしている後**青い背景をペイントしています – Robert

+0

これは、何をペイントする唯一の関連コードです。問題はあなたが言及したように私の絵画のオーダーに関連していると思いますが、私はこの時点で正しいステップをどのように実装するのかは不明です。誰かがもっと洞察力を提供できると願っています。 – cweston

答えて

0

投稿されたコードが不足しているため、私の答えがあなたを助けてくれると確信するのは難しいですが、あなたの問題は、画家がQRectをペイントするだけでなく、QItemDelegateもペイントすることです。これは、QRectの色を明示しない限り、QRectの色をセル全体と同じ色に塗りつぶすことを意味します。

これが当てはまる場合、QRectはまだ存在しますが、セルの残りのコンテンツと同じ色です。再度painter.setPen(QColor.red);

を行うことにより、QRectのための画家の色を変更することができ

、私はのオフに動作するように多くのコードを持っていませんが、チェックは別の色にしたい場合は、以下を行う必要があり別の色に設定します。

もっとコードを提供すれば、私はあなたにもっと鮮明に答えることができました。

+0

もちろん、私はこれをJavaで行いました(C++でも同じことができます) – Ryan

関連する問題