在Qt中我有QListView
使用包含要显示的数据的自定义Model类。根据数据,我希望设置背景(最终是前景/文本)颜色以匹配数据的状态。
到目前为止,我已经通过在QBrush
方法中为QColor
的{{1}}内部选定的QVariant
返回Qt::BackgroundRole
来完成此操作,就像这样:
QAbstractListModel::data()
我遇到的问题是,当项目的状态变为“中性”时,我希望能够将颜色重置回窗口小部件的默认背景颜色,但我无法找到执行此操作的正确说明。实现这一目标的规范方法是什么?
答案 0 :(得分:2)
在数据方法中尝试这样的事情:
if (role == Qt::BackgroundRole)
{
bool itemStateIsNeutral = ...
if (itemStateIsNeutral) return QVariant();
// else:
return QVariant(QBrush(item.color()));
}
您可能需要返回QVariant(QBrush())
,我不确定。