QAbstractListModel 在不同线程中调用时如何工作?

问题描述 投票:0回答:1

我正在一个 QT 应用程序中工作,单击按钮后,我将启动一个线程并在继承的 QThread 类的运行中调用一个函数。我的意思是我有一个带有 doInitalProcessing() 的 A 类。一个 ClassA_Thread 类(一个 QThread 类),它具有覆盖 run 函数,并且它从 run 函数调用 doInitalProcessing()。单击按钮从 qml 启动线程。现在 doInitalProcessing() 正在发出一个信号,该信号被 qml 捕获,并且 qml 正在调用 classB 中的另一个函数,例如 updateList()。 CLassB继承自QAbstractListModel,在updateList中它正在更新qml中的视图。现在我想将 updateList() 操作移至其他线程。首先,我尝试仅在 ClassA_Thread 中调用 updateList() ,我得到了 CLassB 的实例,但它没有更新 qml 中的视图,但是当我创建另一个线程 ClassB_Thread 时,在运行中,函数调用 updateList( ),它起作用了,它更新了 qml 中的视图。

我只是想知道这背后的原因是什么。

c++ qt qml
1个回答
0
投票

尝试考虑使用插槽和信号在 classA_thread 和 classB 之间进行通信,并且 classb 在连接到适当信号的插槽中处理 UI 更新

© www.soinside.com 2019 - 2024. All rights reserved.