I have made a Gui thread and a QTcpSocket thread in Qt.I want to access data
from QTcpSocket thread to Gui thread.How to solve it?
Do i need to declare some global variable and how?
问问题
884 次
2 回答
1
QTcpSocket 是从 gui 线程创建的。
所以此时 gui 线程有一个指向套接字对象的指针。
然后它在 gui 中的插槽和套接字中的信号之间创建连接。
在套接字对象中,每当您获取数据时,您只需发出一个包含数据的信号,该信号将被 gui 线程拾取。
您可以通过信号/插槽非常有效地传递任何 Qt 类型,例如 QString、QByteArray(或原始指针)。如果线程之间的信号的详细信息也会自动处理。
于 2012-08-29T15:17:54.817 回答
1
最简单的方法是通过信号槽连接进行通信。每个线程中有一个 QObject。发送对象有一个信号,该信号连接到另一个线程中接收对象的槽。
在此设置中,您确保将连接两端的对象配置为存在于正确的线程中。您可能需要调用QObject::moveToThread()
. QObject 还有一个属性,您可以在其中获取当前线程(在这种情况下用于调试目的)。
然后像往常一样建立信号槽连接。由于两个对象在不同的线程中,当触发信号时,会在接收标志的事件循环中放置一个槽调用事件。这在 Qt 文档中进行了解释,请查找Qt::QueuedConnection
.
于 2012-08-29T14:59:35.897 回答