QTreeWidget交替行颜色设置

时间:2011-08-09 16:03:24

标签: qt qt4

我想将颜色设置为使用

完成的树形图中的替换行
setAlternatingRowColors(1);
QPalette p = palette();
p.setColor( QPalette::AlternateBase, QColor(226, 237, 253) );
setPalette(p);

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

1 个答案:

答案 0 :(得分: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;
    }
}