C++ (Qt)
int retVal;
int inputVal;
QMetaObject::invokeMethod(mainThreadObject, "showDialogAndRetValue", Qt::BlockingQueuedConnection, Q_RETURN_ARG(int, retVal), Q_ARG(int, inputVal));
Если я правильно понял задачу, то примерно вот так. mainThreadObject - объект, с которого нужно получить данные, showDialogAndRetValue - слот в объекте mainThreadObject, который сформирует, выведет диалог и вернет введенные данные, retVal - возвращаемое значение и inputVal - входящий параметр для функции
int mainThreadObject->showDialogAndRetValue(int).