Название: Загрузка изображений из каталога Отправлено: Hvzh от Февраль 23, 2015, 08:30 Есть каталоги с изображениями. Пользователю предлагается выбрать каталог, после чего изображения из грузятся как QLabel's pixmaps. Проблема в следующем. Диалог выбора каталога закрывается только после того, как все изображения загрузятся, а хотелось бы, чтобы сначала диалог закрылся.
Вызов диалога: Код: void PhotoTableWindow::openProject() Загрузка изображений: Код: void PhotoTableWindow::loadRecent() Название: Re: Загрузка изображений из каталога Отправлено: Old от Февраль 23, 2015, 08:53 Вызывайте загрузку через очередь сообщений:
QMetaObject::invokeMethod( this, "loadRecent", Qt::QueueConnect ); Название: Re: Загрузка изображений из каталога Отправлено: Hvzh от Февраль 23, 2015, 09:35 Увы, не помогло...
Название: Re: Загрузка изображений из каталога Отправлено: Old от Февраль 23, 2015, 09:54 Увы, не помогло... Не может быть, покажите как сейчас у вас выглядит код.Странно, что он вообще остается виден после завершения getExistingDirectory. Еще попробуйте перед загрузкой картинок вызвать QApplication::processEvents(). А какая версия Qt? Название: Re: Загрузка изображений из каталога Отправлено: Hvzh от Февраль 23, 2015, 11:06 Qt 5.4 под Ubuntu 12.04. Код стал выглядеть так:
Код: void PhotoTableWindow::openProject() Название: Re: Загрузка изображений из каталога Отправлено: Hvzh от Февраль 23, 2015, 11:13 Да, забыл. сам openProject - слот, привязанный к пункту меню:
Код: connect(ui->actionOpen, SIGNAL(triggered()), this, SLOT(openProject())); Название: Re: Загрузка изображений из каталога Отправлено: Hvzh от Февраль 23, 2015, 11:26 Перед вызовом invokeMethod поставил задержку в 5 миллисекунд. Все заработало нормально. Но не нравится мне это...
Название: Re: Загрузка изображений из каталога Отправлено: Igors от Февраль 23, 2015, 12:19 А простенько вставить processEvents (после getExistingDirectory) ?
Название: Re: Загрузка изображений из каталога Отправлено: Hvzh от Февраль 23, 2015, 14:31 А простенько вставить processEvents (после getExistingDirectory) ? Не помогаетНазвание: Re: Загрузка изображений из каталога Отправлено: Bepec от Февраль 23, 2015, 14:46 А я скажу в чем у вас проблема - у вас загрузка изображений блокирует главный поток приложения. Потому или выносите в отдельный поток, или в каждой итерации вашего цикла вызывайте processEvents :)
Название: Re: Загрузка изображений из каталога Отправлено: Hvzh от Февраль 23, 2015, 15:08 А я скажу в чем у вас проблема - у вас загрузка изображений блокирует главный поток приложения. Потому или выносите в отдельный поток, или в каждой итерации вашего цикла вызывайте processEvents :) Вызов в цикле помог, спасибо. Раньше я вызывал processEvents только однажды, перед началом цикла. Видимо, это было рано. А про отдельный поток думал, но пока не решил, нужно лиНазвание: Re: Загрузка изображений из каталога Отправлено: Bepec от Февраль 23, 2015, 15:14 Думайте, решайте, пишите :D
Название: Re: Загрузка изображений из каталога Отправлено: vipet от Февраль 23, 2015, 16:58 Вместо QLabel'ов можно (и чаще всего нужно) заюзать какой-нибудь View (QListView, QTableView, ...)
|