Wątki - wznawianie/zatrzymywani
-
Witam, utworzyłem klasę i dodaję ją do nowego wątku (this->moveToThread(QThread*));
wszystko ładnie działa, podłączyłem sygnały tej klasy do funkcji, które działają w wątku głównym. Musiałem tak zrobić bo w wątkach steruję Labelami, które wyświetlam na formie. Jednak potrzebuję też losować pozycję tych labelów. Początkowo losowanie odbywa się w konstruktorze, a więc zanim klasa będzie działać w osobnym wątku. Jednak, gdy to losowanie odbywa się już gdy wątek chodzi, coś nie działa prawidłowo. Wydaje mi się, że gdyby zatrzymać wątek i funkcję losowania wykonać w głównym wątku to by działało wtedy ok. Jednak nie wiem jak zatrzymać wątek, wyrzucić z niego klasę, wykonać funkcję i z powrotem dać this->moveToThread(QThread*), thread->start(); -
Oddziel porządnie logikę od GUI. Pamiętaj, w Qt rendering może być wykonywany wyłącznie w głównym threadzie. A więc, gdy wątek wygeneruje kombinajcę labeli, prześlij w sygnale (albo mutexami) do wątku głównego informacje na temat nowej kombinacji w jakiś uzgodniony sposób (QStringList, QVector, może QMap, etc.).
Albo, wyślij z wątku krótki sygnał, że należy przemieszać labelki, a logikę umieść w głównym wątku.