Qt中利用QtConcurrent :: run开启一个单独线程,如何与主线程(或者其他线程)进行信号和槽函数的连接呢?
之前使用过程中运行会报错如下:
因为是在不同的线程中进行操作的,所以导致对应槽函数等一直不能得到触发。(我尝试过传递对象参数去调用等还是不能得到触发)
QThread等方法也能实现对应的功能,不使用QtConcurrent。
解决办法:
调用的对象中,绑定自身的信号和槽函数;
线程创建:
线程函数:
如此就能解决问题了。
之前看见网上搜索有些博客提示是可以通过返回值进行cancel关闭线程的,实际上不可行的,
返回的 QFuture<void>只能查询查看线程的相关信息。
注意:QtConcurrent::run的返回值QFuture<void> 是不能通过cancel()关闭线程的。