Добрый день.
Делаю окно поиска файлов, разбил программу на два класса. 
1) GUI окно с потоком
2) класс в котором происходит поиск файлов, в этом классе происходит генерация сигнала найденного файла типа QString и потом уже в класс GUI под средством слота передаю эту строку QListWidget.
Когда конкретные файлы то всё работает отлично, но когда я начинаю например поиск всех файлов в диске D: (много файлов), то окно подвисает, в конечном результате оно нормально всё потом отображает, все файлы с диска D:
Вопрос: как добиться чтобы в QListWidget добавлялись файлы при поиске так же плавно как и в TotalCommander, когда в нём ищешь то там файлы нормально без подвисаний добавляются.
Ниже участки кода:
1) блок вычисления
void filesSearchEngine::process()
{
    QStringList nameFilter;
    int starCnt = 0;
    if (m_strFileNames.contains("*")) {
        //если есть звёзды то считаем их
        for (int i = 0; i < m_strFileNames.size(); ++i)
            if (m_strFileNames.at(i) == '*')
                ++starCnt;
        //если количество звёзд равно 1 то создаём фильтр
        if (starCnt == 1 && m_strFileNames.at(0) == '*') {
            nameFilter.append(m_strFileNames);
            m_strFileNames.clear();
        }
        //если количество звёзд > 1;
        else if (starCnt == 2 && m_strFileNames == "*.*") {
            m_strFileNames.clear();
        }
    }
    QDirIterator it(m_dirPath, nameFilter, QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);
    while (it.hasNext()) {
        it.next();
        //break thread
        if (thread_Break)
            break;
        sync.lock();
        if (thread_Pause)
            pauseCond.wait(&sync);
        sync.unlock();
        emit currentSearchPatch(it.filePath());
        if (it.fileName().contains(m_strFileNames)) {
            emit foundFilePatch(it.filePath());
        }
        else if (m_strFileNames.isEmpty()) {
            emit foundFilePatch(it.filePath());
        }
    }
    emit currentSearchPatch(":");
    emit finished();
}
2) блок в GUI, слот добавления элементов в QListWidget
void wgtFilesSearch::addItemToFileList(QString data)
{
    m_foundFileList->addItem(data);
}
добавление в поток
//thread
    m_fileSearchThread = new QThread();
    m_searchEngine = new filesSearchEngine();           //<<search class
    m_searchEngine->moveToThread(m_fileSearchThread);
ниже стандартные коннекты