void UpdateManager::run(){ qDebug() << "UpdateManager запущен"; while(true) { if( categoriesUpdateQuery->length()) // Если очередь обновлений не пуста { if( !updating ) // Если обновление уже не запущено { qDebug() << "Начинаю обновление категории " << categoriesUpdateQuery->first()->getCategoryName(); currentCategoryUpdate = new ImagesDataDownloader( categoriesUpdateQuery->first(), allImages, settings); // ImageDataDownloader - Еще один тред, который, собственно, и выполняет обновление, UpdateManager только их запускает и организует их запуск по одной за раз. connect(currentCategoryUpdate, SIGNAL(updateStatusBar(QString)), SIGNAL(updateStatusBar(QString))); connect(currentCategoryUpdate, SIGNAL(downloadFinished()), categoriesUpdateQuery->first(), SLOT(update_availableImagesNum())); // Обновление QLabel показывающего количество изображений в категории connect(currentCategoryUpdate, SIGNAL(downloadFinished()), SLOT(onCategoryUpdated())); currentCategoryUpdate->start(); updating = true; } } qDebug() << "UpdateManager работает"; }}void UpdateManager::onCategoryUpdated(){ qDebug() << "Завершено обновление категории " << categoriesUpdateQuery->first()->getCategoryName(); emit categoryUpdated( categoriesUpdateQuery->first()); categoriesUpdateQuery->removeFirst(); delete currentCategoryUpdate; updating = false;}
... Q_ASSERT(updatng == true); // добавьте эту строку categoriesUpdateQuery->removeFirst(); delete currentCategoryUpdate; updating = false;}