データを表示するQTreeViewがあり、色の進捗バーを表示するためにカスタムのデリゲートを列の1つにインストールしました。私はoption.palette
が提供する色情報を使用して、デフォルトのデリゲートの動作をエミュレートすることができました:QTreeViewカスタムアイテムの表示デリゲートとCSS
class ProgressBarDelegate : public QStyledItemDelegate
{
public:
ProgressBarDelegate(QObject *parent = 0) {}
~ProgressBarDelegate() {}
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
// QStyledItemDelegate::paint(painter, option, index); // default implementation
painter->save();
// progressbar construction and drawing
painter->restore();
}
};
さて、私はマウスのホバーイベントに行を強調表示します。
ui->treeView->setStyleSheet("QTreeView::item:hover{background-color:#D0E0F0;}");
作品を強調ホバーを、しかし、予想通り、私のカスタムデリゲートの実装では、CSSの設定を無視します:私は、ツリービューにカスタムCSSを設定
(DARKBLUE線が選択されます項目、lightblue-ish行は、CSSのホバーで強調表示された行です)
デフォルトの実装を有効にすると、CSS設定が代理人に影響しますが、画像がぼやけます:
質問です:
- は、デリゲートをwithingからデータを設定オーバーライドCSSを知る方法はありますか?
option.palette
にこの情報が含まれていないようです。
Iはdescried hereとしてQTreeViewプロパティを読み取る試みた:
qDebug() << treeView()->property("background");
をしかし、コンソールがQVariant(Invalid)
を示すIも使用さdrawControl()
とdrawPrimitive()
方法、のためのQtソースコードを読み取る試みデフォルトのデリゲートの実装では、私はウィジェットパレット参照のみを検索し、CSSオーバーライドへの接続は見つけられませんでした。
ええ、実際に必要な状態のすべてを手動で検出する必要はないと本当に望んでいました。私は結局あなたのソリューションを実装しなければならないと思う。 – Kef