Ошибка остановки QTimer в многопоточном приложении
Я работаю над многопоточным приложением Qt. У меня рабочий класс и нить. В рабочем классе я создаю QTimer в стеке (не используя новый). Затем в основной класс я перехожу к рабочему потоку. Однако, когда я закрываю приложение, я получаю это сообщение:
QObject::killTimer: Timers cannot be stopped from another thread
QObject::~QObject: Timers cannot be stopped from another thread
Это мой код:
worker_ = new Worker();
worker_->moveToThread(&workerThread_);
Worker_->getTimer().moveToThread(&workerThread_);
Я также попытался объявить QTimer дочерним классом рабочего класса, но все равно получаю сообщение об ошибке:
QObject::killTimer: Timers cannot be stopped from another thread
ASSERT failure in QCoreApplication::sendEvent: "Cannot send events to objects
owned by a different thread. Current thread 0x0x18c6c1b0. Receiver '' (of type 'MonitoringWorker') was created in thread 0x0x97fe90", file
kernel\qcoreapplication.cpp, line 576
В этом случае у меня есть эта строка в рабочем конструкторе:
Worker::Worker() : timer_(this)
И я удалил эту строку:
Worker_->getTimer().moveToThread(&workerThread_);
Примечание: getTime возвращает ссылку на объект QTimer
Может кто-нибудь объяснить, что не так
заранее спасибо
РЕДАКТИРОВАТЬ: я решил мою проблему создания работника в стеке, а не в куче. Тогда я делаю QTimer рабочим классом, и он больше не жалуется