用不同的颜色填充QTreeView中的单元格,并使用不同的颜色填充QDiagCrossPattern中的单元格

时间:2019-01-25 06:33:17

标签: c++ qt

我正在使用一个QTreeView,其中我希望特定的单元格具有背景色,比如说蓝色,并带有一个带有灰色的Qt :: DiagCrossPattern。 并且最好在Model :: data中而不是在paint中使用此实现。 是否可以通过Model :: Data本身中的Qt :: BackgroundRole实现此目的? 我尝试这样做:

Model::data(const QModelIndex &index, int role) const
{
case Qt::BackgroundRole:
{
QColor backgroundcolor = Qt::blue; 
return QBrush(backgroundcolor, Qt::DiagCrossPattern);
}
}

但这可以使背景色保持透明,并且diagcrosspattern线为蓝色,这不是必需的。

1 个答案:

答案 0 :(得分:2)

您可以创建纹理(例如QPixamp)并在QBrush

中使用它

请参见QBrush(const QPixmap&)

对于纹理,您可以加载图像或使用QPainter

创建图像
QPixmap pixmap(16, 16);
pixmap.fill(QColor(0, 0, 255));
QPainter painter(&pixmap);
painter.fillRect(pixmap.rect(), QBrush(QColor(128, 128, 128), Qt::DiagCrossPattern));