【问题标题】:QTreeView, style each level differentlyQTreeView,每个级别的样式不同
【发布时间】:2016-07-19 11:54:53
【问题描述】:

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

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

我已经尝试过这个http://doc.qt.io/qt-4.8/stylesheet-examples.html#customizing-qtreeview 似乎只使用 css 是不可能的。 QProxyStyle 可以帮忙吗?怎么用?

谢谢你,马丁。

【问题讨论】:

    标签: c++ qt4


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-14
      • 1970-01-01
      • 1970-01-01
      • 2017-04-22
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多