QTreeView,为每个级别设置不同的样式

QTreeView, style each level differently

本文关键字:设置 样式 QTreeView      更新时间:2023-10-16

我的问题与这个问题非常相似。

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

我已经试过了http://doc.qt.io/qt-4.8/stylesheet-examples.html#customizing-qtreeview似乎只使用css是不可能做到这一点的。QProxyStyle有帮助吗?它将如何使用?

谢谢你,马丁。

如果使用自定义模型(源自QAbstractItemModel或类似模型),则可以通过在请求任何外观角色的数据时从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()为这些角色设置数据。