5
(各行に関連するデータに応じて)カスタム色を使用してQTreeViewウィジェットの列の1つにテキストを描画したいと考えています。これが動作するようには思えないので、私がしようとした(QTreeViewの特定のインデックスのカスタムテキストの色
virtual void drawRow(QPainter* p_painter, const QStyleOptionViewItem& option,
const QModelIndex& index) const
{
QStyleOptionViewItem optionCustom = option;
if (index.column() == 2)
{
optionCustom.palette.setColor(QPalette::Text, Qt::red);
}
QTreeView::drawRow(p_painter, optionCustom, index);
}
しかし、明らかに、私は何かが欠けています:私はdrawRow()保護されたメソッドをオーバーロードして、このようなスタイルのオプションパラメータ(削ぎ落とした例)を変更しようとしました色役割も
QPalette::WindowText
に変更してください)。
ありがとう! 'data()'メソッドがアイテムの外観にも使用されていることはわかりませんでした。私は、オーバーライドされた 'paint()'メソッドを使って、カスタムアイテムのデリゲートを使用したいと思ったものを実装しましたが、 'data()'メソッドを使うことはずっと優雅です。 –
@VladoKlimovskýはい、コンテンツと外観を別々に扱う(モデルとデリゲート)ために、外観に使うべきではないと考える純粋主義者もいます。 – neuronet