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

Gag*_*ege 5 qt qt4

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

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

ser*_*nko 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

希望这有帮助,问候

  • 谢谢,但是,当我使用 setCellWidget 将小部件放入单元格中时,我正在寻找一种设置单元格背景的方法。有没有办法做到这一点? (2认同)

Liz*_*Liz 3

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

QTableWidget::item {
    background-color: rgb(255, 85, 127);
}
Run Code Online (Sandbox Code Playgroud)

您可以设置此代码,如下所示:

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

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