Есть класс унаследованный от 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())))
Можно ли заменить эти действия более красивыми методами?