2

にバインドQStandardItemModelし、QListViewバックグラウンド/非UIスレッドからモデルを更新するQt4アプリがあります。

場合によっては、UI以外のスレッドからQStandardItem'ssetText(..)メソッドが非常に繰り返し呼び出されると、アプリケーションがdataChanged(..)ハンドラーでクラッシュします。setText("xxxxx")forループで繰り返し呼び出すことで、問題を再現できます。私のアプリでは、データはネットワークから読み取られるため、UI以外の別のスレッドでモデルを更新します。

これは一般的なpbですか?私が正しく理解している場合、これはキューに入れられた接続に関連しており、QStandardItemModelスレッドセーフではありませんか?この問題を回避するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

4

QStandardItemModelはQtGuiライブラリの一部であり、そこにあるすべてのクラスはスレッドセーフではないと見なされます。データの実際の設定をGUIスレッドに移動しても問題ありません。ネットワークスレッドからのキューに入れられたシグナルを使用することで、これを非常に簡単に行うことができます。

于 2010-12-11T12:48:46.527 に答える