Да, допускаю, что сформулировал заголовок глупо.. Дело вот в чём, есть приложение, часть которого занимается поиском директорий и определённых фалйов в этих директориях. Часть кода с поиском директорий проходит успешно и быстро. Часть когда с поиском файлов работает в двух случаях: когда файлов мало, и когда много файлов проходит через отладчик.
То есть я почему и в замешательстве, я в процессе отладки "тыкая" по F5 могу подгрузить более 7 тысяч файлов. А когда абсолютно то же самое без отладки запускаю, висит и всё. При чём висит в самом начале (есть полоса прогресса).
Может сталкивался кто.. Вот код на всякий:
double progress_current = 0;
ui->labelProgressBar->setText("Открытие файлов");
for (QString &dir : dirList)
{
ui->progressBar->setValue((int)((progress_current++ / (double)dirList.size()) * (double)100));
QDir export_folder(dir);
export_folder.setNameFilters(QStringList() << "*.jpg" << "*.jpeg" << "*.png");
QStringList tempFileList = export_folder.entryList();
for (QString &file : tempFileList)
{
Photo temp(dir + '/' + file);
photoList->push_back(temp);
}
}
ui->progressBar->setValue(100);
ui->labelProgressBar->setText("Файлы открыты");
Вот пруфы на всякий: 1. Во время запуски Realese 2. Во время отладки
У вас загрузка идет в основном потоке, вот гуй и не отвечает.
Короткий способ поправить - добавить в цикл после установки значения в progressBar
строку
QApplication::processEvents();
Но это не феншуйно и фу. Правильный способ - выносить длинные задачи в отдельный поток и общаться с основным потоком сигналами.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Начал изучать работу межпроцессного взаимодействия с помощью DBus в QtНачал с примера ping-pong
Начал повторять C++ и возникла проблема при суммировании матриц, что вывод 2-х матриц А и В нормальный, а при выводе матрицы А+В выходит вот что...