Qt:如何在QTableWidget/QTableView中设置交替行颜色?

9

我有一个包含来自数据库的数据行的QTableView。然而,设置setAlternatingRowColors(true)仅交替显示具有数据的行的颜色-其余表格只是白色,这不是您预期的行为(例如,在任何浏览器的书签列表中查看-空行具有交替颜色)。

是否有人知道Qt提供的表视图的解决方法或替代方案?我已经尝试过样式表和项委托,但结果相同。


你自己有找到什么吗?我也遇到了同样的问题。 - PrisonMonkeys
2
我最终使用了QTreeView / QTreeWidget。它们很容易像表格一样运作。然而,显然,QTable *和QTree *在填充空行时应该以相同的方式交替着色,但是... - Zumteufel
3个回答

12

1
交替颜色很简单,但当数据不足时使交替颜色填满整行就是另一回事了。 - swdev

5
你可以像这样重新实现模型的 data() 方法:
QVariant MyModel::data(const QModelIndex& index, int role) const
{
    if(role == Qt::BackgroundColorRole)
        return color;
    ...
}

使用setModelData(),也可以用委托完成相同的操作。


应该可以。在我的情况下它是有效的。你可以试试,不会花费太多时间。 - Funt

0
作为一种解决方法,可以使用空行填充表格的其余部分(即在模型中,重写rowCount()函数以提供足够的空行来填充它)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接