В Qt у меня есть QListView
, использующий пользовательский класс Model, который содержит данные для отображения. Основываясь на данных, я хочу, чтобы цвет фона (и в конечном итоге цвет переднего плана / текста) был установлен в соответствии с состоянием данных.
До сих пор я достиг этого, возвращая QBrush
с выбранным QColor
внутри QVariant
для Qt::BackgroundRole
в методе QAbstractListModel::data()
, вот так:
QVariant CustomListModel::data(const QModelIndex& index, int role) const
{
Item& item = findItem(index);
if (item)
{
// ...
if (role == Qt::BackgroundRole)
{
return QVariant(QBrush(item.color()));
}
// ...
}
}
Проблема, с которой я сталкиваюсь, заключается в том, что я хочу иметь возможность вернуть цвет обратно к цвету фона виджета по умолчанию, когда состояние элемента становится «нейтральным», но я не смог найти правильные инструкции для этого. Каков канонический способ сделать это?