crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Перерисовка окна и занятость процессора
edwardoid
  опции профиля:
сообщение 25.7.2009, 22:48
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

Спасибо сказали: 0 раз(а)




Репутация:   0  


Проблема вот в чем. Работая с большими файлами моя программа занимает весь проц, это ИМХО нормалньо, что-то вроде кодирование/декодирование видео. Но из-за этого не отрисовывается допустим QProgressBar который есть в рограмме, не видно никаких изменнеий, сколько процентов сделано, сколько осталось. Как подобные проблемы решить?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MoPDoBoPoT
  опции профиля:
сообщение 25.7.2009, 23:32
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 172
Регистрация: 7.5.2009
Из: Москва
Пользователь №: 738

Спасибо сказали: 44 раз(а)




Репутация:   9  


1. Вынести этот долговыполняющийся код в отдельный поток и высылать из него сигналы о работе главному потоку.
2. Периодически вызывать метод qApp->processEvents();

Имеется ввиду, что это альтернативные варианты.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
edwardoid
  опции профиля:
сообщение 25.7.2009, 23:32
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 171
Регистрация: 1.5.2008
Из: Ереван, Армения
Пользователь №: 164

Спасибо сказали: 0 раз(а)




Репутация:   0  


второе не понял, это второй вариант решения проблемы?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MoPDoBoPoT
  опции профиля:
сообщение 25.7.2009, 23:35
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 172
Регистрация: 7.5.2009
Из: Москва
Пользователь №: 738

Спасибо сказали: 44 раз(а)




Репутация:   9  


Да. Просто ответ отправил, а потом осознал, что скудновато описал. Это два возможных решения.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.7.2009, 4:29
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(MoPDoBoPoT @ 26.7.2009, 3:32) *
2. Периодически вызывать метод qApp->processEvents();
я тоже так делаю. Уменя из БД данные долго, почти поштучно выбираются в модели, поэтому я сигнал посылаю (он связан индикатором выполнения), а затем даю приложению события обработать (в том числе перерисовать и индикатор выполнения):
    if (breakSelect) return;
    emit selected(percent);
    QCoreApplication::processEvents();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.12.2024, 14:24