Qt Android application. Backround swipe closure handling
I need help with clean exit when user shuts down application from background (swipe quit/kill).
I want to call method from class that is written in C++, in onDestroy() method.
Problem is that one is .java and other .cpp
Is there a way, and how, to handle that swipe from .cpp file or it must be done in .java?
For Linux, Windows and MACOSX (desktop app) i have done this way and it is working without problems
I tried to add Android but its not working. I tried also to call closeEvent in destructor ~MainWindow() but still no effect.
I have found what is the problem, but still cannot find the solution.
When i press BACK BUTTON, this is the order of events:
1. closeEvent() ---> most important thing for my app, cleanup done there
But when i press HOME BUTTON, this is the order of events:
I tried adding finish(), but even that is not working(closeEvent() is ALWAYS missing )
Can anyone tell me am i doing something wrong or how can mimic BACK BUTTON by pressing HOME BUTTON?
well, on mobile, when your app gets pushed into the back ground, the application state is changed to suspended
you could listen for that signal and react accordingly ?
Thanks for the hint!
Problem is that my class is derived from QWidget.
Or can i emit close signal from one class to another?
if you add
#include <QGuiApplication>to your class, than you have access to the
qAppglobal pointer of your QGuiApplication instance. You can use that to connect to the signal
Thanks! I have implemented everything that you said and IT WORKS!
I summary i have done next:
I have connected my QCoreApplication with my widget like this
connect(QCoreApplication::instance(), SIGNAL(applicationStateChanged(Qt::ApplicationState)), this, SLOT(state_changed_event(Qt::ApplicationState)));
and inside my state_changed_event slot i am handling state when application is suspended.
Main idea was to handle force closure of application from background, i suppose this is not the correct solution, but this workaround is handling that ok for now.