Qt界面程序通常什么情况下要使用到线程?
Qt界面程序在调用接口处理时间较长的任务时(如连接网络、复制文件等等耗时操作),界面在等待接口返回前会导致卡死。
为了不让界面卡死,可以使用一个子线程来处理耗时任务,关于QThread的线程在这里就不介绍了,本文讲的使用std::thread来快速方便解决这个问题。
解决问题思路
1、现代大部分C++编译器已经支持C++11 的自带线程类std::thread,线程随时创建,随时销毁方便。
2、QEventLoop类事件循环可用来等待线程执行完毕,并且界面不会因等待而卡死。
3、在线程任务执行结束后,可给QEventLoop对象发送一个信号,告知程序执行结束,QEventLoop对象在收到信号时退出循环,向上告知线程执行结果。
4、另外,通过
std::async([&]{ });
显得更方便些,头文件需要包含#include<future>
。
详见另一篇博文:
https://blog.csdn.net/y396397735/article/de