I mean exactly what I wrote
Provide a common interface for all types of objects your tree carries and use the interface from within the model. For instance:
class Base {
public:
QVariant data
(int role
=Qt
::DisplayRole) const = 0;
};
class Level1Item : public Base {
public:
QVariant data
(int role
=Qt
::DisplayRole) const { return myName;
}
};
Base *ptr = static_cast<Base*>(index.internalPointer());
return ptr->data(role);
}
class Base {
public:
QVariant data(int role=Qt::DisplayRole) const = 0;
};
class Level1Item : public Base {
public:
QVariant data(int role=Qt::DisplayRole) const {
return myName;
}
};
QVariant Model::data(const QModelIndex &index, int role){
if(!index.isValid()) return QVariant();
Base *ptr = static_cast<Base*>(index.internalPointer());
return ptr->data(role);
}
To copy to clipboard, switch view to plain text mode
Bookmarks