Russian Qt Forum
Ноябрь 23, 2024, 07:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: аналог model-view решения для HTML ?  (Прочитано 3665 раз)
mezmay
Гость
« : Январь 27, 2014, 21:03 »

Есть клиент-серверный чат на Qt, поддерживает в качестве отображаемых сообщений текст и картинки. Выводит это в виде html в QtextEdit. Также он поддерживает оффлайн-сообщения.

В результате если пользователь авторизуется, а ему "падают" из оффлайн 30 сообщений с картинками (~800х800), то клиент подвисает.

Не очень понимаю, как убрать это торможение. Принимать сообщения в базу, а к ней прикрутить html-представление??
Также не понимаю, как реализовать просмотр большой истории клиента без больших тормозов...
Подскажите, куда копать
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Январь 27, 2014, 21:17 »

От тормозов спасает создание отдельных потоков. Гуи висит потому что главный поток в котором он создавался перегружен, поэтому затратные и длительные операции рекомендуется создавать в отдельном потоке Улыбающийся
По поводу потоков, смотрите QThread и QtConcurrent с QFuture Улыбающийся
« Последнее редактирование: Январь 27, 2014, 21:21 от gil9red » Записан

mezmay
Гость
« Ответ #2 : Январь 27, 2014, 21:20 »

так у меня длительная операция - отрисовка сообщений на форме, ее-то в другой поток не перенесешь
Записан
mezmay
Гость
« Ответ #3 : Январь 27, 2014, 21:44 »

еще вопрос. не понимаю, можно ли к таблице БД через модель прикрутить представление в виде html-страницы, ну то есть списка сообщений (автор + текст OR картинка), то есть как бы к QSqlTableModel прикрутить QListView или его наследника?...
Проясните ситуацию пожалуйста
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #4 : Январь 28, 2014, 00:21 »

так у меня длительная операция - отрисовка сообщений на форме, ее-то в другой поток не перенесешь
Если по одному сообщению через сигнально-слотовый механизм передавать из отдельного потока в гуёвый поток то гуй по крайней мере виснуть не будет.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
mezmay
Гость
« Ответ #5 : Январь 28, 2014, 09:11 »

Если по одному сообщению через сигнально-слотовый механизм передавать из отдельного потока в гуёвый поток то гуй по крайней мере виснуть не будет.
Да, можно и так попробовать, должно стать лучше, особенно если через QueuedConnection.

Но все-таки хотелось бы прояснить вопрос с model-view
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.112 секунд. Запросов: 23.