QTreeWidget 交替行颜色设置

Posted

技术标签:

【中文标题】QTreeWidget 交替行颜色设置【英文标题】:QTreeWidget alternate row color setting 【发布时间】:2011-08-09 16:03:23 【问题描述】:

我想在我使用的树小部件中将颜色设置为交替行

setAlternatingRowColors(1);
QPalette p = palette();
p.setColor( QPalette::AlternateBase, QColor(226, 237, 253) );
setPalette(p);

但在每次单击后,颜色设置为已设置行下方的行,或者颜色设置在行之间切换。我希望将其设置为特定行的常量。表示首先如果第二行设置颜色,然后单击颜色设置将转到第三行。我希望它只在第二行

【问题讨论】:

【参考方案1】:

我建议使用模型来执行此操作,并为模型中的背景返回适当的颜色。当data(const QModelIndex& index, int role) 被称为视图的模型对象(或在您的情况下为QTreeWidget)时,role 的值之一将是Qt::BackgroundRole。像下面这样的东西会做你想做的事:

QVariant SomeModel::data(const QModelIndex& index, int role)

    switch(role)
    
    // other role handling code here. below is the except for handling BackgroundRole
    case Qt::BackgroundRole:
        if (0 == index.row() % 2)
            return QColor(226, 237, 253);
        else
            return Qt::white;
    break;
    

【讨论】:

以上是关于QTreeWidget 交替行颜色设置的主要内容,如果未能解决你的问题,请参考以下文章

ttk treeview:交替行颜色

Qtablewidget设置颜色交替

如何设置QTreeWidget标头颜色并隐藏分割线?

GtkTreeView 交替行颜色

在 QTableWidget 中区分交替行颜色和选择颜色

如何设置jqgrid的替代行颜色和背景颜色