Why does the call need to be threaded? Maybe you can use QEventLoop instead? You'll still need an application object, of course.

As for the object itself - you may try to detect if there already is an existing application object or you may ask the user to provide one before you make the main call.