我正在使用一个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线为蓝色,这不是必需的。
答案 0 :(得分:2)
您可以创建纹理(例如QPixamp
)并在QBrush
对于纹理,您可以加载图像或使用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));