Только в любом случае это не более чем костыль.
Мерцаний, да, не будет, но нагрузка будет очень большая.
Нужно накапливать строки и добавлять уже пачку.
В слоте накапливаешь строки и перезаряжаешь таймер на те же 200мс, в котором уже добавляешь в модель строки.
Попробовал
накапливаю в QStringList - переменная получается разделяемый ресурс
в начале таймера ставлю паузу с помощью QSemaphore на поток чтобы он не накидывал больше
в конце таймера очищаю QStringList снимаю паузу
Результат нет миганий, но нет и ощущения реального процесса поиска
таймер на 200 мс сработает 2 раза, т.е. картинка такая
нажали старт половина прилетела сразу и потом прилитела вторая половина результата
таймер на 70 мс на также 2 раза сработает но 1 часть результат будет меньше
Думаю оставить вариант с таймером и еще думаю можно сделать свою модель данных чтобы добавлять не по 1 а сразу добавлять списком
сейчас вывод выглядит следующим образом
if(str_list.isEmpty())
return;
if(thread_search)
thread_search->pause();
int col = model_result_files->rowCount();
model_result_files->insertRows(col, str_list.size());
for(int i = 0; i < str_list.size(); i++)
{
model_result_files->setData(model_result_files->index(col-1+i), str_list.at(i));
}
str_list.clear();
if(thread_search)
thread_search->wake();