宁波外贸网站制作,wordpress 导出 word,原创文章的网站被降权或无排名的原因有哪些,网站注册备案Qt有很多IO相关的类#xff0c;比如说QTcpSocket、QFile#xff0c;总的来说#xff0c;在Qt的框架内使用#xff0c;还是非常方便的。 但是用过其他框架IO类的人#xff0c;可能有一个很不习惯#xff0c;就是Qt的所有IO类#xff0c;都不推荐或者不可以跨线程操作比如说QTcpSocket、QFile总的来说在Qt的框架内使用还是非常方便的。 但是用过其他框架IO类的人可能有一个很不习惯就是Qt的所有IO类都不推荐或者不可以跨线程操作不然就会报错比如说操作QTcpSocket跨线程调用write接口就会报错
socket notifiers cannot be enabled from another thread
要解决这个问题直观的说就是不要跨线程操作网上也有很多类似的说明。 这也是有道理的很多时候真的是设计问题导致的因为设计失误出现了不应该有的跨线程操作。 当然也可以用信号和槽封装一下但是这样会涉及很多不必要的代码我个人觉得也太过于麻烦。 那么我这里就提供一个更简单的方法对QTcpSocket跨线程调用代码如下
QMetaObject::invokeMethod( socket, std::bind( static_cast qint64(QTcpSocket::*)(const QByteArray ) ( QTcpSocket::write ), socket, QByteArray( xxxx ) ) ); Qt解决跨线程调用socket/IO类导致报错的问题socket notifiers cannot be enabled from another thread_qt 异步线程调用io-CSDN博客