c++ - 恢复 QTableWidgetItem 的默认颜色?

标签 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 的默认颜色?

最佳答案

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

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);

关于c++ - 恢复 QTableWidgetItem 的默认颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37240952/

相关文章:

c++ - 没有匹配的调用函数,但从未调用过那个确切的函数

c++ - 是否可以在键盘输入缓冲区中向前看并检测MFC/Win32中的条码输入?

c++ - 计算机中的字长与 int 或 long 有何关系

c++ - 将数组值绑定(bind)到诺基亚 Qt 中的 ListView 控件?

c++ - Qt #define "signals"与 GStreamer (gst) 冲突

c++ - 操作 Windows 资源管理器窗口时 UDP 数据包丢失

c++ - sizeof(array) 在此 strstr 重新实现中未给出预期值

c++ - 如何在不指定模板的情况下声明函数模板指针typedef?

python - 如何保持 QPushbutton 处于选中状态,然后在按钮网格中找到选中的内容(pyQt)

c++ - 如何在更改文本后调整 QWidgetAction 显示的 QLabel 的大小