Пытаюсь отправить сигнал из главного потока (ГУИ) в свой поток. Метод глубокого загугливания привел к такому коду.
В главном потоке пытаюсь определить сигнал из this и присвоить слот от своего потока
ThreadServer = new threadserver();
QObject::connect(this, SIGNAL(stopServer()), ThreadServer, SLOT(stop()));
ThreadServer->start();
При нажатие кнопки шлю сигнал
В своем потоке создал
...
public slots:
stop();
...
И код самой функции stop();
void threadserver::stop() {
server->close();
emit serverStop();
}
Где сервер это наследник от QTcpServer; В итоге когда я жму кнопку "Остановить сервер" получаю ошибку, которая говорит. что севрер создан в другом потоке (хотя слот находится в этом самом потоке где создан сервер) и что править сервер нельзя. В результате приложение крашиться.
Листинг ошибки:
ASSERT failure in QCoreApplication::sendEvent: "Cannot send events to objects owned by a different thread.
Current thread 3e56a8. Receiver '' (of type 'QNativeSocketEngine') was created in thread 93bdfa8",
file kernel\qcoreapplication.cpp, line 348
C:\QT\Server\debug\Server.exe завершился с кодом 3
Помогите пожалуйста разобраться с отслеживанием сигналов у разных потоков, просто я еще планировал создавать поток для отдельных QTcpSocket, и поток от QTcpServer должен уметь "сказать" им вызвать определенные функции и даже передать данные. Спасибо.