Модификация QStandardItemModel из не-пользовательского интерфейса QThread? - PullRequest
2 голосов
/ 11 декабря 2010

У меня есть приложение Qt4, которое связывает QStandardItemModel с QListView и обновляет модель из фонового / не-пользовательского потока.

Иногда, когда QStandardItem метод setText(..) вызывается очень часто из потока, не являющегося пользовательским интерфейсом, приложение завершается сбоем в обработчике типа dataChanged (..). Я могу воспроизвести проблему, неоднократно вызывая setText("xxxxx") в цикле for. В моем приложении данные считываются из сети, поэтому я обновляю модель в отдельном потоке без пользовательского интерфейса.

Это обычный пб? Если я правильно понимаю, это связано с подключением в очередь и QStandardItemModel не является потокобезопасным? Как обойти эту проблему?

Спасибо!

1 Ответ

4 голосов
/ 11 декабря 2010

QStandardItemModel является частью библиотеки QtGui, и все классы в ней считаются не поточно-ориентированными.Вы должны быть в порядке, если вы перенесете фактическую настройку данных в поток GUI.Вы можете сделать это довольно легко, используя поставленный в очередь сигнал от сетевого потока.

...