Название: Реализация анимированных смайлов. Отправлено: Magvaj от Февраль 18, 2009, 12:59 Доброго времени суток.
Хотелось бы узнать: кто-нибудь сабж реализовывал? Я уже всё перерыл. Хотелось бы сделать по типу MDC клиента или Skype. Стандартными виджетами такое вроде не сделать... читал что нужна переделка, но вразумительной документации так и не нашёл :-( Название: Re: Реализация анимированных смайлов. Отправлено: BRE от Февраль 18, 2009, 13:01 Доброго времени суток. А если по таймеру картинки перерисовывать?Хотелось бы узнать: кто-нибудь сабж реализовывал? Я уже всё перерыл. Хотелось бы сделать по типу MDC клиента или Skype. Стандартными виджетами такое вроде не сделать... читал что нужна переделка, но вразумительной документации так и не нашёл :-( Название: Re: Реализация анимированных смайлов. Отправлено: pastor от Февраль 18, 2009, 13:16 Несовсем понятен вопрос. Подгрузи gif картинки и все.
Название: Re: Реализация анимированных смайлов. Отправлено: Magvaj от Февраль 18, 2009, 13:27 gif подгружен... проблема в том, что в клиентах надо по-нормальному их выделять в поле ввода.. копировать в виде текста... может и по таймету надо перерисовывать, только вот как реализовать нормальное взаиможействие с копированием и вводом текста?
Название: Re: Реализация анимированных смайлов. Отправлено: Lion от Февраль 18, 2009, 23:51 http://wiki.qtcentre.org/index.php?title=Animation_in_QTextEdit тут глянь
Название: Re: Реализация анимированных смайлов. Отправлено: pastor от Февраль 19, 2009, 14:27 Magvaj, можешь поинтересоваться этим вопросом у форумчанина IMPOMEZIA. Он разрабатывает свой клиент-серверный чат (http://www.prog.org.ru/topic_8414_0.html), думаю поддержка смайлов в нем есть.
Название: Re: Реализация анимированных смайлов. Отправлено: IMPOMEZIA от Февраль 19, 2009, 17:25 http://wiki.qtcentre.org/index.php?title=Animation_in_QTextEdit тут глянь Работать будет, но нужно сильно дорабатывать, что уменьшить максимальную скорость обновления и отключать анимацию для невидимых смайлов, но главная проблема как уменьшить размер перерисовки остался нерешённым, приходится обновлять блок целиком, а для больших блоков это огромные тормоза, в оригинальной статье документ перерисовывается целиком, что приводит к ещё большим тормозам, там же на странице обсуждения есть ссылка на таску 175893 (http://trolltech.com/developer/task-tracker/index_html?method=entry&id=175893), которая могла бы решить проблему, но её видимо не закроют никогда.Сейчас использую QWebView, но там тоже есть некоторые проблемы с производительносью 243940 (http://www.qtsoftware.com/developer/task-tracker/index_html?method=entry&id=243940). Цитата: Magvaj проблема в том, что в клиентах надо по-нормальному их выделять в поле ввода.. т.е. чтоб смайлы отображались в поле ввода? такое я не использую, но выбор не велик, см. выше.Цитата: Magvaj копировать в виде текста... Да, очень нужная штука, но я пока не разбирался с этим.Название: Re: Реализация анимированных смайлов. Отправлено: ритт от Февраль 19, 2009, 17:50 175893
приоритет 2 - т.е. будет реализовано в 4.6 или 4.7 (если не потребуется изменение интерфейса - тогда только 5.0) Название: Re: Реализация анимированных смайлов. Отправлено: Magvaj от Март 01, 2009, 16:51 да, скудно... но делать придётся...
всех благодарю за разъяснения ;-) Название: Re: Реализация анимированных смайлов. Отправлено: Magvaj от Март 10, 2009, 22:37 смайлы реализовал. Использовал код отсюда: http://wiki.qtcentre.org/index.php?title=Animation_in_QTextEdit
Единственное дополнение сделал- когда имеется несколько ресурсов с одинаковым урлом(например два одинаковых улыбающихся смайла- очень частая ситуация)- они перерисовываются с наложением, так как метод animate вызывается всё чаще с каждым добавлением ресурса. Для этого в описании класса объявил: Код: QStringList AddedAnimations; После функцию addAnimation привёл к виду: Код: void MyAnimatedTextEdit::addAnimation(const QUrl& url, const QString& fileName) При этом рисуется всё красиво, но есть недостаток, хотя не существенный- одинаковые смайлы двигаются синхронно ;-) Название: Re: Реализация анимированных смайлов. Отправлено: Magvaj от Март 10, 2009, 22:50 Цитата: Magvaj копировать в виде текста... Да, очень нужная штука, но я пока не разбирался с этим.Если интересно: Допустим есть Код: MyAnimatedTextEdit *qw; из описанного выше класса. Через QTextCursor можно получить ссылку на выделенное с помощью Код: QTextDocumentFragment sl=qw->textCursor().selection(); Затем если строка sts не пуста- значит что-то выделено и можно приступать к экранированию. Собственно мне возвращалось из строки "123:-)123", где соответственно рожа в виде смайла, что-то вроде: Код: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> Теперь ищем в документе все ссылки на смайлы и экранируем их в соответствии с таблицей имеющихся смайлов. В моём случае я менял все "<img src="FILENAME" />" на рожи. После этого нехитрой манипуляцией с любым классом типа QTextDocument или QTextEdit преобразобываем экранированный HTML в PlainText и выводим туда, куда его надо скопировать ;-) Если что- могу дать полный код функций ;-) Название: Re: Реализация анимированных смайлов. Отправлено: IMPOMEZIA от Март 11, 2009, 00:15 смайлы реализовал. Использовал код отсюда: http://wiki.qtcentre.org/index.php?title=Animation_in_QTextEdit Разве оно не начёт тормозить, если текста станет много? из-за суррогатного обновления всего документа:Код
Название: Re: Реализация анимированных смайлов. Отправлено: Magvaj от Март 11, 2009, 17:34 общался полдня- вроде всё нормально было... смайлы то грузятся всего один раз...
|