第一点:
查看QDataStream类,可以发现这一句
Q_DISABLE_COPY(QDataStream)
Q_DISABLE_COPY是QT的一个宏,顾名思义,意思为禁用拷贝构造函数,如果要知道这个宏的实现,可以继续F2。
所以第一个结论,要使用信号槽传递QDataStream数据,只能传递引用或指针,这里以传递引用为例。
第二点:
要实现跨线程传递数据,如果采用自动连接的信号槽,即不显示给定connect的第五个参数。
connect(classa,&ClassA::sendData,classb,&ClassB::receiveData);
这种写法由QT自动判别第五个参数的值:
1.信号发送者所依附的线程和信号接收者所依附的线程相同的时候,那么第五个参数的值为:Qt::DirectConnection
2.信号发送者所依附的线程和信号接收者所依附的线程不同的时候,那么第五个参数的值为:Qt::QueuedConnection
接着看Q