QTreeView,每个级别的风格不同

时间:2016-07-19 11:54:53

标签: c++ qt4

我的问题与this question非常相似。

我有一个连接到模型的QTreeView。是否可以以不同的方式为树的每个级别设置样式?我需要改变每一行的背景颜色。不同的级别会有不同的背景。扩展的项目也会有不同的颜色。

我已经尝试了这个http://doc.qt.io/qt-4.8/stylesheet-examples.html#customizing-qtreeview似乎只使用css是不可能的。 QProxyStyle可以提供帮助吗?如何使用?

谢谢你,马丁。

1 个答案:

答案 0 :(得分:0)

如果您使用的是自定义模型(源自QAbstractItemModel或类似),则可以在请求任何appearance role的数据时从QAbstractItemModel::data()返回适当的值来实现此目的:< / p>

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()为这些角色设置数据。