Добрый день, подскажите, пожалуйста, что делать, если программа виснет, когда

с помощью qdiriterator пробегаешься по всем папкам и просто выводишь название каждого файла?

Взял пример из документации:

QDirIterator it("/sys", QStringList() << "scaling_cur_freq", QDir::NoFilter, QDirIterator::Subdirectories);
while (it.hasNext()) {
QFile f(it.next());

qDebug() << f.fileName();
}

Если файлов мало, то не успевает зависнуть, а если много, то всё - капец, беда
Неужели как-то потоки подключать? Спасибо заранее

20 ответов

18 просмотров

Тебе многопоточность нужна. Собираешь данные в массив а по окончанию возвращаешь данные. Можно использовать QtConcurrent::run и QFuture

это не название каждого файла, а уже целый readAll с открыванием

BV-Багров Автор вопроса
Mr.Mait
Тебе многопоточность нужна. Собираешь данные в мас...

Вопрос в том, как run использовать? Непосредственно в QDiriterator?

BV Багров
Вопрос в том, как run использовать? Непосредственн...

По идее у тебя не должно тормозить после исправления. В run запускаешь функцию с файлами

BV Багров
Вопрос в том, как run использовать? Непосредственн...

положить этот приведённый выше фрагмент в run. или в QThread::create

BV Багров
Исправил )

там в итераторе вроде QFileInfo был. с ним быстрее брать имя, размер итп. без QFile дополнительного

BV-Багров Автор вопроса
Suigintou45 E14
там в итераторе вроде QFileInfo был. с ним быстре...

Спасибо @Suigintou45 @mr_mait Сейчас попробую, отпишусь

Suigintou45 E14
там в итераторе вроде QFileInfo был. с ним быстре...

Да, поддерживаю. Там еще можно узнать директория или файл и посмотреть имя файла не открывая его

Выводить в цикле уже не правильно, хотя бы через сигнал слот, какая никакая асинхронность будет

BV-Багров Автор вопроса
Bril
Выводить в цикле уже не правильно, хотя бы через с...

@mr_mait @Suigintou45 насколько я понимаю громоздкие операции вообще не засовывать в qdiriterator? Максимум скопировать все имена в файлов в QList и затем уже над этими строками работать?

BV Багров
@mr_mait @Suigintou45 насколько я понимаю громоз...

ну лучше сканировать ФС один раз, да

BV-Багров Автор вопроса
Suigintou45 E14
ну лучше сканировать ФС один раз, да

Подскажите, пожалуйста, если не трудно ) Допустим, я засунул тяжёлую операцию в qdiriterator (она сопровождается progressBar’ом), а потом пишу сообщение о том, что операция закончена и название файла, над которым она закончена. В итоге при запуске у меня сначала выводятся все сообщения о завершении операции. А потом начинает крутиться progressBar и обрабатываться файлы. Это опять что-то с потоками? Сделал moveToThread для объекта класса, в котором тяжёлая функция выполняется, чтобы интерфейс не вис. Спасибо!

BV Багров
Подскажите, пожалуйста, если не трудно ) Допустим,...

Да, если у вас обработка прогресса происходит в слоте или в потоке

BV-Багров Автор вопроса
DI
Да, если у вас обработка прогресса происходит в сл...

В одном потоке (гуишном) происходит вывод, а в другом обработка - Вы это хотите сказать?

BV Багров
В одном потоке (гуишном) происходит вывод, а в дру...

Да. Слот - это создание нового потока или что то похожее

BV Багров
Подскажите, пожалуйста, если не трудно ) Допустим,...

каким образом сделана связь из потока, с сообщениями и с прогресс-баром?

BV-Багров Автор вопроса
Suigintou45 E14
каким образом сделана связь из потока, с сообщения...

Никаким) Сделана связь между прогрессбаром и процессом обработки

BV Багров
Никаким) Сделана связь между прогрессбаром и проце...

я про то, как поток обновляет gui. напрямую низя

Suigintou45 E14
я про то, как поток обновляет gui. напрямую низя

Если в поток передать сам интерфейс, то вполне возможно

Похожие вопросы

Обсуждают сегодня

Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Привет!) Кто как юзает переменные в строках?) Чисто ради интереса Вот так: echo "У меня {$bananasAmount} бананов"; Или вот так: echo "У меня ${bananasAmount} бананов";
Виталий
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
разработчик ботов скидывает портфолио, боты которые он уже создал. А вот как узнать что это именно он их создал?
Gosudar
4
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Карта сайта