crossplatform.ru

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

> Чат с графическим отображением
lucifer_vrn
  опции профиля:
сообщение 27.2.2009, 23:37
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 19
Регистрация: 27.2.2009
Пользователь №: 580

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




Репутация:   0  


здравствуйте. не давно начал писать в кьюте.
стоит задача написать графическую часть чата, т.е. окно отображение постов.
ТЗ примерно такое.
- сообщения чата должны отображаться в облачках. что понимается под облачками см. тут - http://www.apple-iphone.ru/photos6/sms.jpg. т.е. вокруг каждого поста красивая обводка с градиентной заливкой.
- текст сообщения можно выделять чтобы скопировать в буфер обмена.(текст может быть и отрендерен, а элемент тогда должен быть выделяемый с контекстным меню)
- окно чата можно мастштабировать(т.е. сайзить)
- количество сообщений в окне с полосой прокрутки - не лимитированно, пока память не кончиться, да и чтоб проц не хавало.

уже два дня ломаю мозг как это сделать. главная в том, что когда изменяю размер окна(сжимаю в ширину), высота текста, одного поста увеличвается(текст переноситься но новую строку) и когда это происходит я никак не могу сделать чтоб по человеский все отображалось.

пробовал два варианта.
клал на виджет - QGraphicsView, в него вгонял QGraphicScene, на него класс QGraphicItem. Каждый итем - один пост чата. Получилась фигня. Каждый элемент имеет свою координату, один пост под другим, когда сжимаю виджет по ширине - получается, что текст увеличивает высоту и одно облочко с текстом накладывается на другое.
вариант номер два:
model - view - delegate.
создаю делегата, который по вызову paint отрисовывает текст и облачко и отображает в QListView. Проблемы опять лезут: я правильно обрабатываю sizeHint(это я вижу за счет того что для пробы делаю fillRect на option.rect который передается в paint), но размер самого итема в QListView при этом не изменяется, т.е. если текст уменьшается по высоте(за счет увеличиния его ширины) между постами образуются белые пятна.....


вообщем сложно описать такую проблему. поэтому сформулирую конкретный вопрос: смотря на рисунок http://www.apple-iphone.ru/photos6/sms.jpg как бы вы реализовали такой чат в Qt с требованиями которые я выше озвучил????
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
kwisp
  опции профиля:
сообщение 28.2.2009, 11:36
Сообщение #2


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

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




Репутация:   23  


Цитата(ViGOur @ 28.2.2009, 1:42) *
А я бы покопал в сторону Таблицы стилей Qt. Да и пользователи смогут сами рисовать и настраивать скины для чата. :)

тоже вариант но как я понял основная задача это хранить все эти сообщения в памяти, т.е. с виджетами либо не получиться либо получиться что нужно показывать всего несколько остальные все равно в памяти либо информация о них в памяти, но тогда чтобы создать и показать нудно время получается мягкого скрола по сообщениям не будет(может и ошибаюсь если что поправьте)

а графСцена как известно милионы показывает без проблем.
но все равно думаю что для неё очень простая задача. первый вариант можно с ней попробовать....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 22.12.2024, 13:09