Hi, there are many ways of doing what you want, so I can just tell your how I would do this in your case.
Instead of connecting a QML signal to a c++ slot I usually just call the c++ slot from c++ (without any connections), that of course depends on your c++ file but you can easily register any QObject with the QML engine and then create objects of the class form QML and also call slots and any function marked with Q_INVOKEABLE.
So in your case you don't need to use the QQmlContext or anything from the QtQuick2ApplicationViewer or whatever, but you just register your model class to the QML engine and then create the model object from QML, so you can have a "save" slot in the model (if that makes sense) and just call it.
to register any QObject class to the QML engine you can simply use "qmlRegisterType":http://qt-project.org/doc/qt-5.0/qtqml/qqmlengine.html#qmlRegisterType in your main.cpp (before the QML engine is created, even be before QGuiApplication):
@
qmlRegisterType<YourModelClass>("YourModel", 1, 0, "YourModel");
@
and then create an object anywhere in QML with:
@
import YourModel 1.0
YourModel {
id: model
}
// in some QML function
model.save()
@
give it an ID like any other QML object and you can access it and call slots (and invokable methods), connect signals and use it as your model in the ListView (via the ID reference).
If you want you can still create the model form c++ and use setContextProperty, if you have registered the class your should be able to invoke the slots on that object from QML but I think creating the model in QML is cleaner instead of a global context property?
I hope that helps you, there might be some official tutorials on this, but this should get you started. :)