Вот мы в конструкторе потока (который, понятное дело, выполняется из главного потока) пишем:
MyThread::MyThread() : mainControl(откуда-то возьмём)
{
connect(this, MyThread::doSomething, mainControl->asQobject(), [this]() {
mainControl->doSomething();
});
}
и в дальнейшем в потоке
void MyThread::run()
{
emit doSomething();
}
(mainControl — поле класса, обычный интерфейс C++, mainControl->asQobject() — главная форма программы)
Два вопроса.
1. Будет ли в такой ситуации синхронизация с главным потоком? Или существуют какие-то более интересные методы синхронизироваться с главным потоком?
2. Не пропадёт ли захваченный this, когда мы давно выбрались из той функции, где лямбда была создана?