dval надо прочитать из своей "модели" напрямую, без вызова метода self.data
это вообще не понятно, как узнать-аналогия с C++ не работает
это ты должен знать что надо вернуть в случае, если dval≤0. например, вернуть белый цвет.
NULL #QVariant() #ни одно не подходит
а что там должно "подходить"? это только ты можешь знать как надо обрабатывать другие роли.
предлагаю почитать в документации как вообще model-view работает, там и примеры есть.