Я использую 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
QFileIconProvider
, который ничего не делает, и передать его экземпляруQFileSystemModel
. - person alexisdm   schedule 13.07.2013