我正在使用从QAbstractTableModel派生的自定义表模型。

我已经覆盖了headerData(),可以通过返回Qt::ForegroundRole上的颜色来更改单个行标题(或列标题,但我在这里只涉及行)的字体颜色

if(role == Qt::ForegroundRole)
   return Qt::green;

但是,如果我使用Qt::BackgroundRole设置标题单元格的背景颜色,则什么也没有发生。
if(role == Qt::BackgroundRole)
   return Qt::red;

我在return上设置了一个断点,并且已经到达。但是什么也没发生:-(

有什么想法我错了吗?

最佳答案

AFAIK角色颜色等效于设置调色板颜色,绘制 header 单元格的QStyle可以随意忽略它。

我在使用QPalette或样式表在小部件上设置任意颜色时遇到了麻烦。文本倾向于起作用,“窗口”彩色背景(例如QPushButton背景)也起作用,但是文本输入字段背景却不起作用(例如QLineEdit)。但是AFAIK取决于特定的QStyle实现,因此不仅在小部件之间,而且在平台之间也会有所不同。确切地获得所需结果的唯一方法是重新实现QStyle(一项艰巨的任务),或在paintEvent(..)中手动进行绘制(很难遵循当前的QStyle和仍然很多代码)。

关于c++ - Qt::BackgroundRole似乎被忽略了,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13837403/

10-11 22:27