Задержка пользовательского интерфейса Qt из-за низкой производительности QFileSystemModel

Я использую QFileSystemModel для анализа структуры каталогов с более чем 20 000 файлов и подкаталогов на Mac. Заполнение QFileSystemModel занимает около 8-10 секунд, и в это время пользовательский интерфейс зависает. Согласно документации Qt, синтаксический анализ файловой системы выполняется в отдельном потоке. Поэтому мне интересно, делаю ли я что-то не так, чтобы остановить пользовательский интерфейс, или это известная проблема. Пожалуйста, взгляните на трассировку стека ниже, которая является снимком основного потока, когда QFileSystemModel обходит структуру каталогов и пользовательский интерфейс останавливается. Библиотеки Qt не являются библиотеками отладки, я мог управлять только трассировкой стека без каких-либо символов отладки, но надеюсь, что это может быть подсказкой, чтобы выяснить, что здесь может быть не так.

0   _ISGetCGImageRefForISImageRef
1   PlotISImageRefInContext
2   PlotIconRefInContext
3   qt_mac_convert_iconref
4   qt_mac_constructQIconFromIconRef    
5   QFileIconProviderPrivate::getMacIcon
6   QFileIconProvider::icon
7   QFileInfoGatherer::getInfo
8   QFileSystemModelPrivate::_q_fileSystemChanged   
9   QFileSystemModel::qt_metacall
10  QObject::event
11  QFileSystemModel::event
12  QApplicationPrivate::notify_helper
13  QApplication::notify
14  QCoreApplication::notifyInternal
15  QCoreApplicationPrivate::sendPostedEvents
16  __CFRunLoopDoSources
17  __CFRunLoopRun
18  CFRunLoopRunSpecific
19  RunCurrentEventLoopInMode
20  ReceiveNextEventCommon
21  BlockUntilNextEventMatchingListInMode
22  _DPSNextEvent
23  -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
24  -[NSApplication run]
25  QEventDispatcherMac::processEvents
26  QEventLoop::processEvents
27  QEventLoop::exec
28  QCoreApplication::exec
29  main    

person Soumya Das    schedule 11.07.2013    source источник
comment
Можете ли вы добавить код, в котором выполняется синтаксический анализ файловой системы?   -  person Cory Klein    schedule 11.07.2013
comment
Если это связано с этим, вы можете попробовать написать класс, производный от QFileIconProvider, который ничего не делает, и передать его экземпляру QFileSystemModel.   -  person alexisdm    schedule 13.07.2013