在Qt中,如何从模型中重置ListView中项目的背景颜色?

时间:2011-10-06 00:26:18

标签: c++ qt

在Qt中我有QListView使用包含要显示的数据的自定义Model类。根据数据,我希望设置背景(最终是前景/文本)颜色以匹配数据的状态。

到目前为止,我已经通过在QBrush方法中为QColor的{​​{1}}内部选定的QVariant返回Qt::BackgroundRole来完成此操作,就像这样:

QAbstractListModel::data()

我遇到的问题是,当项目的状态变为“中性”时,我希望能够将颜色重置回窗口小部件的默认背景颜色,但我无法找到执行此操作的正确说明。实现这一目标的规范方法是什么?

1 个答案:

答案 0 :(得分:2)

在数据方法中尝试这样的事情:

if (role == Qt::BackgroundRole)
{
    bool itemStateIsNeutral = ...

    if (itemStateIsNeutral) return QVariant();
    // else:

    return QVariant(QBrush(item.color()));
}

您可能需要返回QVariant(QBrush()),我不确定。