Есть класс унаследованный от QThread.
C++ (Qt)
class mySecond;
class myThread : QThread
{
public:
    void setData();
    void startSecond();
 
signals:
    ready();
    strtSecond();
 
protected:
    void run();
 
private:
    mySecond *second;
}
 
void setData()
{
    second->setData();
}
 
void startSecond()
{
    //second->start()
    emit strtSecond();
}
 
void run()
{
    second = new mySecond;
    connect(this, SIGNAL(strtSecond()), second, SLOT(start()));
 
    emit ready();
 
    exec();
 
    delete second;
}
1. Сигнал ready() использую для того, чтобы знать когда обьект second создан и можно было его сконфигурировать. Конфигурация производится из главного потока.
2. startSecond() вызывается из главного потока. Для того чтобы метод second->start()  выполнялся в контексте вновь созданного потока использую промежуточный сигнал.
(Тут на ум приходит только сделать startSecond() слотом, а в глвном потоке сделать через QTimer::singleShot(0, myThread, SLOT(startSecond())))
Можно ли заменить эти действия более красивыми методами?