[SailfishDevel] Problem in interaction qml and c++

Michael Fuchs michfu at gmx.at
Thu Apr 23 06:51:18 UTC 2020


Hi,

...I don't even know how to phrase the subject of this mail...

I'm hacking on SMPC and I want to reorganize the spaghettis of the code and
I'm stuck at a problem now, where I don't even know what to search for:

I created a c++ class called AlbumList, and i registered it in qml, ...

====
qmlRegisterType<AlbumList>("smpc", 1, 0, "AlbumList");
====

...so it can be instanciated there like this:
====
ListModel {
  model: AlbumList { }
}
====

This works fine. Now that the object is instantiated it needs to fetch
information from mpd about the albums and get the coverimages from a database.
Both are instantiated in the "controller".

====
Controller::Controller(....) {
  mImgDB = new ImageDatabase();
  mNetAccess = new NetworkAccess();
}
====

The controller gets created in main.cpp:

====
Controller *control = new Controller(view,0);
====

How can AlbumList access mImgDB and mNetAccess?

One solution could be to register the controller itself in qml and then write
sth like this in qml:

====
AlbumList {
  imgDB: controller.imgDB
  netAccess: controller.netAccess
}
====

but it's redundant.
Isn't there a way I can solve this inside c++?
Do I have to register AlbumList differently in qml? Can I influence, which
constructor of AlbumModel is used by qml, so I can hand over netAccess and
imgDB as parameters.

I hope I could make myself clear about this.

Greetings, fooxl.





More information about the Devel mailing list