3

我正在使用从QAbstractTableModel.

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

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

但是如果我去Qt::BackgroundRole设置标题单元格的背景颜色,什么都不会发生。

if(role == Qt::BackgroundRole)
   return Qt::red;

我在 上设置了一个断点,return然后就到达了。但什么也没发生:-(

关于我错在哪里的任何想法?

4

2 回答 2

3

AFAIK角色颜色相当于设置调色板颜色,QStyle绘制标题单元格可以随意忽略它。

我在使用QPalette样式表在小部件上设置任意颜色时遇到了麻烦。文本往往会起作用,就像“窗口”彩色背景(QPushButton例如背景)一样,但文本输入字段背景不会(QLineEdit例如)。但是 AFAIK 取决于特定的QStyle实现,因此不仅会因小部件而异,而且会因平台而异。唯一确定的方法是重新实现QStyle(一项艰巨的工作),或者手动绘制它paintEvent(..)(很难遵循当前QStyle且仍然有很多代码)。

于 2012-12-12T13:26:31.037 回答
0

1)您也可以通过使用自己的项目委托来实现它 - 从 QStyledItemDelegate 或其他任何东西继承,重新实现一种方法并将其设置为查看。

2)对于特定的表格或标题视图,使用尊重画笔的样式:

//auto keys = QStyleFactory::keys();
if(auto style = QStyleFactory::create("Fusion")) {
    verticalHeader()->setStyle(style);
}
于 2019-02-12T21:08:53.190 回答