tableData(...)
Не делайте)) Но эту логику все равно делать предется. Не хотите тихать её в модель, сделайте своботдый метот QVariant getObjData(Obj* obj, int column, int role) {
switch (obj->type()) {
case ObjType::GROUP: {
// Куча всякой дряни с qobject_cast, switch(role), switch(index.column())
}
case ObjType::LEAF: {
// Такая же дрянь
}
}
}
// Куча всякой дряни с qobject_cast, switch(role), switch(index.column())уходит в конкретного наследника интерфейса. При этом в модели останется что то вроде:
void MyModel::data(const QModelIndex& index, int role) {
Obj* obj = toObj(index);
return obj->tableData(index.column(), role);
}