Signal that a component is completed AND visible?

  • Hello,

    is there a way to figure out that a qml component is loaded and visible? Component.onCompleted() seems to be signaled before the component is visible on the screen.


  • Hi,

    I usually do not need another signal than Component.onCompleted(), so what is your scenario? Why do you need to know if it is visible as well?

  • Hi,

    thanks for the reply. Starting from the main page, if a user presses a certain Button, I'm loading a totally new screen using the Loader component. For this particular screen I need to initialize and read in some data from external hardware, which might take a few seconds. I thought of starting this process upon Component.onCompleted() and then displaying a progressbar and also fill in the data while I'm retrieving it from the external sensors, so that the user can see whats going on and on his/her discretion also cancel the whole process.

    Starting this activity from within Component.onCompleted() works fine except that I don't see the new screen, progress bar etc. until everything is done (I do call QApplication::processEvents() frequently, while I'm waiting for the hardware init to complete).

    It's not a big problem, there are ways to work around this. Just thought that there might be some signal or method to know once all QML components are ready and visible.

  • First off the Loader has a "progress": and a "status": property that you could use.

    However if you have some sensors and C++ objects then you could always let those objects emit some signals while they process the data. And you could use a "Connections": element in your QML to catch those.

    Does this help in any way?

  • not really. Just tried the signals and status info of the Loader component, but it seems that those signals are also emitted just before the new screen visible. I think I'll do my UI a bit differently to avoid this kind of issues.
    Nevertheless: THANKS for helping!

Log in to reply