在Qt中,我有一個QListView
,它使用了一個包含要顯示的數據的自定義Model類。根據這些數據,我希望將背景(最終是前景/文本)顏色設置爲與數據的狀態相匹配。在Qt中,如何從模型中重置ListView中項目的背景顏色?
到目前爲止,我已經通過在QAbstractListModel::data()
方法返回用的QVariant
內選定QColor
一個QBrush
爲Qt::BackgroundRole
,像這樣做到了這一點:
QVariant CustomListModel::data(const QModelIndex& index, int role) const
{
Item& item = findItem(index);
if (item)
{
// ...
if (role == Qt::BackgroundRole)
{
return QVariant(QBrush(item.color()));
}
// ...
}
}
,我遇到的問題是,我想當項目的狀態變爲'中性'時,能夠將顏色重新設置回部件的默認背景顏色,但是我一直無法找到正確的指令來執行此操作。什麼是規範的方式來實現這一點?
現在考慮添加我嘗試過的東西時,我可能錯過了其他地方所需的連接,它阻止了所需的東西工作。我將在明天的工作中對其進行測試,並瞭解哪些解決方案可行。 – Daemin
好吧,我的不好,這是我的一個問題,不能正確地在其他地方傳播狀態。我已經解決了這個問題,並且很容易地解決了顏色設置和不安定工作 – Daemin