| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [QT4] межпоточное сигнал-слот соединение |
| Автор: DSan 29.4.2008, 23:01 | ||||
| Имеем: программа по нажатию на директорию в дереве каталогов файловой системы отображает эскизы изображений из выбранной директории. Алгоритм формирования прост - загружается изображение в QImage, масштабируется до нужного размера и отображается в ListView в виде иконки. Создание эскиза вынесено во вторичный поток. После формирования эскиз передается в главный поток через сигнал-слот соединение для отображения. Класс для формирования эскизов:
Главное окно (класс MainWindow):
Суть проблемы: если не дожидаться, пока поток подгрузит _все_ эскизы выбранной директории, и выбрать другую, то после очистки модели первым будет отображен эскиз, который был сформирован последним перед остановкой потока. Т.е. получается, что эскиз, который формировался непосредственно перед остановкой потока, не успевает отобразиться в ListView и попадает уже в "новую партию" эскизов. Каким образом можно решить данную проблему? |
| Автор: JackYF 29.4.2008, 23:48 |
Вижу два возможных выхода: 1) прервать предыдущий рабочий поток, если он был, во время перехода на новый элемент в дереве 2) передать вместе с картинкой и некий ID запроса. Если это не последний запрос, не отображать эскиз. |
| Автор: DSan 30.4.2008, 14:29 | ||
Воспользовался вторым советом. Спасибо, проблема решена. |