Russian Qt Forum

Qt => Model-View (MV) => Тема начата: mezmay от Январь 27, 2014, 21:03



Название: аналог model-view решения для HTML ?
Отправлено: mezmay от Январь 27, 2014, 21:03
Есть клиент-серверный чат на Qt, поддерживает в качестве отображаемых сообщений текст и картинки. Выводит это в виде html в QtextEdit. Также он поддерживает оффлайн-сообщения.

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

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


Название: Re: аналог model-view решения для HTML ?
Отправлено: gil9red от Январь 27, 2014, 21:17
От тормозов спасает создание отдельных потоков. Гуи висит потому что главный поток в котором он создавался перегружен, поэтому затратные и длительные операции рекомендуется создавать в отдельном потоке :)
По поводу потоков, смотрите QThread и QtConcurrent с QFuture :)


Название: Re: аналог model-view решения для HTML ?
Отправлено: mezmay от Январь 27, 2014, 21:20
так у меня длительная операция - отрисовка сообщений на форме, ее-то в другой поток не перенесешь


Название: Re: аналог model-view решения для HTML ?
Отправлено: mezmay от Январь 27, 2014, 21:44
еще вопрос. не понимаю, можно ли к таблице БД через модель прикрутить представление в виде html-страницы, ну то есть списка сообщений (автор + текст OR картинка), то есть как бы к QSqlTableModel прикрутить QListView или его наследника?...
Проясните ситуацию пожалуйста


Название: Re: аналог model-view решения для HTML ?
Отправлено: Kurles от Январь 28, 2014, 00:21
так у меня длительная операция - отрисовка сообщений на форме, ее-то в другой поток не перенесешь
Если по одному сообщению через сигнально-слотовый механизм передавать из отдельного потока в гуёвый поток то гуй по крайней мере виснуть не будет.


Название: Re: аналог model-view решения для HTML ?
Отправлено: mezmay от Январь 28, 2014, 09:11
Если по одному сообщению через сигнально-слотовый механизм передавать из отдельного потока в гуёвый поток то гуй по крайней мере виснуть не будет.
Да, можно и так попробовать, должно стать лучше, особенно если через QueuedConnection.

Но все-таки хотелось бы прояснить вопрос с model-view