Qt provide a standard mechanism (aboutToQuit() signal) to insure that a callback is executed at the end of the QApplication event loop. This is typically used to add some cleanup code to your application.
Infortunately, Qt does not provide a “aboutToRun()” if you want to execute an initializing code just before the event loop.
Nevertheless this small trick using a QTimer allows you to stack a callback in the event loop. The callback be executed at the start of the QApplication::start() call.
class myApplication : public QApplication { Q_OBJECT public: myApplication(int& argc, char **argv); ~myApplication(void); public slots: void preExecutionLoop(void); void postExecutionLoop(void); } myApplication::myApplication(int& argc, char **argv) : QApplication(argc, argv) { // some data initialisation .... // --- here is the trick --- // the preExecutionLoop() callback will be called at the entrance of myApplication::exec() QTimer::singleShot(0, this, SLOT(preExecutionLoop())); // just for the record: // the postExecutionLoop() callback will be called at the exit of myApplication::exec() QObject::connect(this, SIGNAL(aboutToQuit()), this, SLOT(postExecutionLoop())); }