2010-12-11 37 views
2

我有Qt4應用程序綁定QStandardItemModelQListView,並從後臺/非UI線程更新模型。從非UI QThread中修改QStandardItemModel?

有時,當QStandardItemsetText(..)方法被非UI線程重複調用時,應用程序將在la dataChanged(..)處理程序中崩潰。我可以通過在for循環中重複調用setText("xxxxx")來重現該問題。在我的應用程序中,數據是從網絡讀取的,因此我在單獨的非UI線程中更新模型。

這是一個普通的pb?如果我理解正確,這與排隊連接有關,並且QStandardItemModel不是線程安全的?如何解決這個問題?

謝謝!

回答

4

QStandardItemModel是QtGui庫的一部分,iirc中的所有類都被認爲不是線程安全的。如果將數據的實際設置移動到GUI線程中,則應該可以。通過使用來自網絡線程的排隊信號,您可以非常輕鬆地做到這一點。

+0

看起來這是我的選擇,我必須去。謝謝! – Gant 2010-12-11 17:07:01