有没有一种简单的方法来改变QTableWidget中行的背景颜色?

时间:2011-02-18 17:31:31

标签: qt qt4

我知道你可以遍历QTableWidgetItems并改变它们的颜色但是,如果我使用了setCellWidget并且我的单元格不是QTableWidgetItems。我找不到简单的setRowColor方法。似乎应该有,因为有交替行颜色和诸如此类的方法。有没有一种简单的方法可以在不对表的委托进行子类化的情况下执行此操作?

修辞问题: 我只是想改变行颜色,我真的需要一个全新的类吗?

2 个答案:

答案 0 :(得分:5)

我相信使用QTableWidget设置行颜色的最简单方法是迭代窗口小部件项目并使用setData方法指定背景颜色,请参阅下面的示例

for (int column=0; column<4; column++)
{
    for (int row = 0; row<5; row++)
    {
        QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg((row+1)*(column+1)));
        newItem->setData(Qt::BackgroundRole, (row%2)>0 ? Qt::red : Qt::blue);
        ui->tableWidget->setItem(row, column, newItem);
    }
}

如果你想让它变得更简单,可以考虑使用QTableView小部件,实现你的模型(我想最简单的方法是子类QStandardItemModel)并在那里保持行颜色。实现setRowColor方法或/和插槽以指定数据行的颜色。

希望这有帮助,尊重

答案 1 :(得分:3)

您可以在QTableWidget中添加样式表,如下所示:

QTableWidget::item {
    background-color: rgb(255, 85, 127);
}

您可以设置此代码以及以下内容:

QString _CustomStyle = QString(
      "QTableWidget::item {"
      "background-color: rgba(162, 186, 60);"
      "}";
tableWidget->setStyleSheet(_CustomStyle);

使用您自己的颜色RGB(显然)。