An abstract class that can be used to provide a ListView with data.
Any data that can be contained in a QVariant can be provided to the ListView. Typical examples of QVariant content are QString, QVariantMap and QObject*. The data can also be an empty QVariant for each item, if the ListView has a ListItemProvider with access to all relevant data.
When a DataModel implementation is attached to a ListView, the ListView will call the DataModel implementation when model data is needed and will listen to the various signals emitted from the DataModel implementation. ListView takes ownership of any QObject* (wrapped in QVariant) returned by data(), if the returned object doesn't already have a parent.
A single DataModel can be connected to any number of ListView objects. ListView has a property ListView::rootIndexPath that allows it to choose which node in the DataModel to use as the root node.