У меня возникла проблема с QThread, а точнее не очень понимаю как его использовать
Есть приложени, в нем есть GUI и логика расчета. Так вот, надо вынести расчет в отдельный поток и что бы его результаты отображались в GUI (с самим отображением проблем нет). Причем расчет может быть как конечным, так и бесконечным, т.е. требуется возможность ручной остановки, но при этом расчет должен остановится в определенном месте, а не где попало. Сам расчет представляет собой в общем то цикл.
Попробовал сделать следующем образом, создал класс от QThread и добавил ему один сигнал (step()) и 3 слота (runN(), dostep(), stop()), соответственно step() соединил с dostep(), а runN и stop вызываются по сигналам из GUI. В runN происходить emit step(), а в step() выполнение нужных действий с проверкой булевой переменной, которую устанавливает stop() в случае необходимости остановится, и если остановка не требуется то происходить опять же emit step(). В виртуальном run() соответственно только exec().
Но после нескольких (не считал, но явном больше сотни) выполнений step() получаю сег.фолт. похоже, что qt следит за тем, откуда что было вызвано и в итоге получается переполнение стека. Если просто влепить бесконечный цикл в run() все работает замечательно, но без возможности остановить.
Как такое лучше реализовать?