![]() |
|
|
![]()
|
|
| DSan |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 10.2.2007 Репутация: нет Всего: нет |
Имеем:
программа по нажатию на директорию в дереве каталогов файловой системы отображает эскизы изображений из выбранной директории. Алгоритм формирования прост - загружается изображение в QImage, масштабируется до нужного размера и отображается в ListView в виде иконки. Создание эскиза вынесено во вторичный поток. После формирования эскиз передается в главный поток через сигнал-слот соединение для отображения. Класс для формирования эскизов:
Главное окно (класс MainWindow):
Суть проблемы: если не дожидаться, пока поток подгрузит _все_ эскизы выбранной директории, и выбрать другую, то после очистки модели первым будет отображен эскиз, который был сформирован последним перед остановкой потока. Т.е. получается, что эскиз, который формировался непосредственно перед остановкой потока, не успевает отобразиться в ListView и попадает уже в "новую партию" эскизов. Каким образом можно решить данную проблему? |
||||
|
|||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 7 Всего: 162 |
Вижу два возможных выхода: 1) прервать предыдущий рабочий поток, если он был, во время перехода на новый элемент в дереве 2) передать вместе с картинкой и некий ID запроса. Если это не последний запрос, не отображать эскиз. |
|||
|
||||
| DSan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 10.2.2007 Репутация: нет Всего: нет |
Воспользовался вторым советом. Спасибо, проблема решена. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |