qt主线程和子线程共享变量
时间: 2023-09-16 08:09:29 浏览: 209
QT多线程编程、主线程与子线程交互数据
5星 · 资源好评率100%
要实现Qt主线程和子线程之间的共享变量,可以采用以下两种方法:
1. 使用全局变量:定义一个两个线程都能够访问和修改的全局变量,这样主线程和子线程就可以共享数据。
2. 使用信号和槽机制:在主线程中定义一个信号,在子线程中定义一个槽函数,通过信号和槽机制将数据从一个线程传递到另一个线程。具体实现步骤如下:
a. 在子线程的头文件中定义一个信号,例如`signals: void test001();`
b. 在子线程的源文件中实现该信号的槽函数,用于接收来自主线程的信号,例如`void sub_thread::receiveSubThreadSignals() { qDebug("received sub_thread1 signals successfully"); }`
c. 在主线程中发送信号,将数据传递给子线程,例如`emit test001();`
d. 在主线程中连接子线程的信号和主线程的槽函数,以实现数据的传递,例如`connect(sub_thread, SIGNAL(test001()), this, SLOT(receiveSubThreadSignals()));`
通过上述方法,主线程和子线程就可以实现共享变量的目的。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [Qt多线程通信 附源码demo](https://download.csdn.net/download/flowerspring/11022121)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [【QT】:线程之间的通信操作(主线程与子线程,子线程与子线程和主线程同时通信,附源码案例)](https://blog.csdn.net/weixin_44322778/article/details/123865798)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文