A model can be defined by subclassing QAbstractItemModel. This is the best approach if you have a more complex model that cannot be supported by the other approaches. A QAbstractItemModel can also automatically notify a QML view when the model data has changed.

Problem is QML is not understanding how to access QPoint::x() method. It is neither a slot nor declared as Q_INVOKABLE.

In order to do that create a QObject wrapper around QPoint and supply Q_INVOKABLE methods namely x(), y() which inturn returns the underlying QPoint x,y. Expose this as a QObjectList to qml. Things should work.