admin管理员组

文章数量:1641342

将QTcpSocket的对象移到子线程以后,只要想write数据,直接调用也好,搞个信号与槽也好,都会出现这个提示:

QSocketNotifier: Socket notifiers cannot be enabled or disabled from another thread

将创建Socket的部分放入到run函数当中就不会出现这个问题:

那为什么当创建Socket的位置在子线程的构造函数或在run函数中会不一样呢???

所以当QTcpSocket在子线程构造函数中创建时,是由主线程创建的,而在run函数中创建时,是在子线程中创建的。因此当子线程在调用QTcpSocket的相关函数时,只有该socket是在子线程中创建的才不会报错。

本文标签: 报错notifiersSocketQSocketNotifierthread