3

から派生したカスタム テーブル モデルを使用していますQAbstractTableModel

私は上書きheaderData()し、個々の行ヘッダー(または列ヘッダーですが、ここではすべて行についてです)のフォントの色を変更するには、色を返すことで変更できますQt::ForegroundRole

if(role == Qt::ForegroundRole)
   return Qt::green;

しかしQt::BackgroundRole、ヘッダー セルの背景色を設定しようとしても、何も起こりません。

if(role == Qt::BackgroundRole)
   return Qt::red;

にブレークポイントを設定するreturnと、それに到達します。しかし、何も起こりません:-(

私が間違っている場所についてのアイデアはありますか?

4

2 に答える 2

3

私の知る限り、役割の色はパレットの色を設定することと同等でありQStyle、ヘッダーセルの描画はそれを自由に無視できます。

QPaletteまたはスタイル シートを使用してウィジェットに任意の色を設定するのに問題がありました。テキストは、「ウィンドウ」色の背景 (QPushButton背景など) と同様に機能する傾向がありますが、テキスト入力フィールドの背景は機能しません (QLineEditたとえば)。しかし、私の知る限り、それは特定のQStyle実装にかかっているため、ウィジェット間だけでなく、プラットフォーム間でも異なります。やりたいことを正確に実現する唯一の確実QStyleな方法は、再実装する (仕事) か、手動でペイントする(現在の多くのコードpaintEvent(..)に従うのが難しい) ことです。QStyle

于 2012-12-12T13:26:31.037 に答える