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 с требованиями которые я выше озвучил????
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
lucifer_vrn
  опции профиля:
сообщение 2.3.2009, 0:16
Сообщение #2


Студент
*

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

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




Репутация:   0  


меня осинила идея!
а почему бы не использовать html.
рамку вполне можно всунуть как бекграунд ячейки таблицы... да и вообще как то в голове крутиться как применить для решенеия такой проблемы хтмл... но никак не получается.
пробовал в QTextCharFormat.setBackground(QBrush(QPixmap())) и всякие другие комбинации со всяким разным, че-то никак не пойму как можно если вообще можно задать бэкграунд у какой-то части...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 2.3.2009, 2:19
Сообщение #3


Дмитрий Трошин
****

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

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




Репутация:   6  


Цитата(lucifer_vrn @ 2.3.2009, 0:16) *
меня осинила идея!
скажи спасибо, что не диарея...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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




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