【发布时间】:2015-12-07 14:12:30
【问题描述】:
我有一个由两个线程组成的简单程序:
- Qt
QApplication::exec操作的主 GUI 线程 -
boost::asio::io_service操作的TCP网络线程
TCP 事件,例如连接或接收数据会导致 GUI 发生变化。大多数情况下,这些是 QLabel 上的 setText 并隐藏了各种小部件。目前,我正在 TCP 客户端线程中执行这些操作,这似乎很不安全。
如何正确地将事件发布到 Qt 主线程?我正在寻找boost::asio::io_service::strand::post 的Qt 变体,它将事件发布到boost::asio::io_service 事件循环。
【问题讨论】:
-
@MohamadElghawi 我知道信号和插槽。但是我到底应该怎么做呢?我不想在我的 TCP 客户端类中包含 Q_OBJECT,所以我不能将它连接到应用程序。
标签: c++ multithreading qt