2010-12-11 31 views
2

J'ai une application Qt4 qui lie QStandardItemModel au QListView et dont le modèle est mis à jour à partir du thread de fond/non-UI.Modification de QStandardItemModel à partir de QThread non-UI?

Lorsque la méthode setText(..) de QStandardItem est appelée très souvent à partir du thread non-UI, l'application se bloque sur un gestionnaire la dataChanged (..). Je peux reproduire le problème en appelant setText("xxxxx") plusieurs fois dans une boucle for. Dans mon application, les données sont lues à partir du réseau, donc je mets à jour le modèle dans un thread séparé, non-UI.

Est-ce un pb commun? Si je comprends bien, cela est lié à la connexion en file d'attente et QStandardItemModel n'est pas thread-safe? Comment contourner ce problème?

Merci!

Répondre

4

QStandardItemModelQStandardItemModel fait partie de la bibliothèque QtGui, iirc toutes les classes y sont considérées non threadsafe. Cela devrait vous convenir si vous déplacez le réglage actuel des données dans le fil de l'interface graphique. Vous pouvez le faire assez facilement en utilisant un signal en file d'attente de votre thread réseau.

+0

On dirait que c'est l'option que je vais devoir suivre. Merci! – Gant