QTreeView,每个级别的样式不同
Posted
技术标签:
【中文标题】QTreeView,每个级别的样式不同【英文标题】:QTreeView, style each level differently 【发布时间】:2016-07-19 11:54:53 【问题描述】:我的问题与this question 非常相似。
我有一个连接到模型的 QTreeView。是否可以以不同的方式设置树的每个级别?我需要更改每行的背景颜色。不同的层次会有不同的背景。展开的项目也会有不同的颜色。
我已经尝试过这个http://doc.qt.io/qt-4.8/stylesheet-examples.html#customizing-qtreeview 似乎只使用 css 是不可能的。 QProxyStyle 可以帮忙吗?怎么用?
谢谢你,马丁。
【问题讨论】:
【参考方案1】:如果您使用自定义模型(派生自 QAbstractItemModel
或类似模型),则可以通过在请求任何 appearance role 的数据时从 QAbstractItemModel::data()
返回适当的值来实现此目的:
QVariant MyModel::data(const QModelIndex& index, int role) const
switch(role)
case Qt::DisplayRole:
...
break;
case Qt::BackgroundRole:
return QColor(Qt::red);
case ...
return QVariant();
使用QStandardModel
,您可以使用QStandardItem::setData()
为这些角色设置数据。
【讨论】:
以上是关于QTreeView,每个级别的样式不同的主要内容,如果未能解决你的问题,请参考以下文章
在 PySide 的 QTreeView 中更改时如何获取项目的先前名称