Заполните ячейку в QTreeView другим цветом и QDiagCrossPattern другим цветом - PullRequest
0 голосов
/ 25 января 2019

Я использую QTreeView, в котором я хочу, чтобы определенные ячейки имели цвет фона, например, синий, а Qt :: DiagCrossPattern с серым цветом на нем. И было бы предпочтительно иметь эту реализацию в Model :: data, а не в paint. Есть ли способ добиться этого через Qt :: BackgroundRole в самой Model :: Data? Я пытался сделать это:

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

Но при этом цвет фона остается прозрачным, а линии diagcrosspattern - синего цвета, что не является обязательным.

1 Ответ

0 голосов
/ 25 января 2019

Вы можете создать текстуру (например, 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...