首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用QFuture调用本地类函数

使用QFuture调用本地类函数
EN

Stack Overflow用户
提问于 2013-04-23 20:37:40
回答 1查看 1.1K关注 0票数 0

我有一个UI程序,在这个程序中,我使用QFuture在另一个类中运行了一个函数,这个类占用了大量的处理器等,导致我的UI崩溃,在使用QFuture进行线程处理之后,它工作得很好,但是我有另一个函数需要立即调用,但是这个函数与我调用它的位置在同一个类中。

我使用了相同的代码来做第二个,但它只显示了关于Timers的错误,我甚至没有使用这些错误,而且我不知道在参数中使用this是否正确:

代码语言:javascript
复制
future = new QFuture<void>;

*future = QtConcurrent::run(this, &GUI::test);

测试是一个局部函数,是不是因为我不能有两个并发的::run调用,或者别的什么,我试着查看文档,但不幸的是没有帮助

基本上,当这被调用时,UI锁定,我收到一些奇怪的警告,我认为线程的要点是UI不会崩溃

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-23 23:43:57

这是我对此最好的猜测。

我猜你有以下情况。(注意:在试图提出问题的解决方案时,了解您所处的情况是非常有用的。通常,事实证明,OP正在以一种根本错误的方式来做一些事情,应该做一些完全不同的事情。)

你有一个图形用户界面。您有一个需要很长时间的操作,您希望在工作线程中运行该操作。在长操作结束时,您需要在GUI线程上调用一个函数,可能是为了更新GUI或类似的东西。

因此,您可以使用QtConcurrent::run(&someObject,&SomeObject:: task )启动后台任务。然后,当任务完成时,您需要通过某种方式在GUI线程上得到通知。

执行此操作的正确方法是将一个QtFutureWatcher附加到从run()返回的未来,并将GUI类上的一个插槽连接到它的完成信号。Qt的信号机制将确保在正确的线程上调用插槽。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16169545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档