我正在使用从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/