将默认颜色恢复为QTableWidgetItem?

时间:2016-05-15 16:43:47

标签: c++ qt

我正在更改QTableWdiget中某些单元格的前景色和背景色以突出显示某些项目。我想稍后删除突出显示并将默认的前景色和背景色恢复到单元格,但我在执行此操作时遇到了麻烦。

目前我在白色背景上将颜色重置为黑色文本,这在大多数系统上都是正确的。但是,在某些系统上,这些颜色将是错误的,例如使用高生存力主题的系统,其中文本为白色,背景为黑色。

因此,我想找到一种方法将默认颜色恢复到QTableWidget中的单元格。为此,我尝试在更改之前备份默认颜色,但这不会保存正确的颜色:

QColor fgCol = table->item(0, 0)->foreground().color();
QColor bgCol = table->item(0, 0)->background().color();

我也尝试了这个,但它也不起作用:

QColor fgCol = table->item(0, 0)->data(Qt::ForegroundRole).value<QBrush>().color();
QColor bgCol = table->item(0, 0)->data(Qt::BackgroundRole).value<QBrush>().color();

有没有办法可以将默认颜色恢复为QTableWidgetItem?

1 个答案:

答案 0 :(得分:2)

您需要备份画笔,而不仅仅是颜色:

QBrush fgBrush = table->item(0, 0)->foreground();
QBrush bgBrush = table->item(0, 0)->background();

稍后恢复它们:

table->item(0, 0)->setForeground(fgBrush);
table->item(0, 0)->setBackground(bgBrush);