【发布时间】:2018-03-27 10:06:27
【问题描述】:
在我希望摆脱 Qt 依赖的应用程序的一个单独组件中,我使用 std::thread 进行某些操作。我想在处理过程中对我的主应用程序进行更改。为此,我尝试将一个函数(即:function<void(UpdateNode*)> nodeUpdatedCallback)从我的应用程序传递给我的组件。
此函数更新 UI,但由于我从另一个线程调用该函数,Qt 说我无法从非主线程访问 UI。
我看过很多文章通过使用QThread 和信号来解决这个问题,创建一个工作线程并将其移动到该线程。
既然我想使用std::thread,是否可以使用std::thread更新基于Qt的UI?
【问题讨论】:
-
你不能把函数传递给GUI线程并在那里执行吗?
-
问题是我想从后台线程调用函数(nodeUpdatedCallback),而它正在工作
-
这正是它的意思:你将一个函数传递给 GUI 线程并在那里执行。从哪个线程传递它并不重要 - 重要的是它传递到哪个线程到。
标签: c++ multithreading qt