我有 Qt4 应用程序,它将 QStandardItemModel 绑定(bind)到 QListView 并从后台/非 UI 线程更新模型。
有时,当从非 UI 线程中反复调用 QStandardItem
的 setText(..)
方法时,应用程序会在 dataChanged( ..) 处理程序。我可以通过在 for 循环中重复调用 setText("xxxxx")
来重现该问题。在我的应用程序中,数据是从网络读取的,因此我在单独的非 UI 线程中更新模型。
这是普通的pb吗?如果我理解正确,这与排队连接有关,并且 QStandardItemModel 不是线程安全的?如何解决这个问题?
谢谢!
最佳答案
QStandardItemModel
是 QtGui 库的一部分,iirc 中的所有类都被认为不是线程安全的。如果将数据的实际设置移至 GUI 线程中,应该没问题。您可以通过使用网络线程中的排队信号轻松地做到这一点。
关于multithreading - 从非 UI QThread 修改 QStandardItemModel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4416706/