C++ (Qt)class Worker : public QObject{Q_OBJECT Q_SIGNALS: void finished(const QString &result); public Q_SLOTS: void do (const QString &in) { // some work emit finished(result); }}; ...................... MainWindow::MainWindow(){ QThread *thread = new QThread; worker = new Worker; worker->moveToThread(thread); thread->start();} .............. QMetaObject::invokeMethod(worker, "do", Q_ARG(QString, in));