Russian Qt Forum

Qt => Qt Script, QtWebKit => Тема начата: anaksimandr от Январь 09, 2012, 22:22



Название: Лог чата через QWebView
Отправлено: anaksimandr от Январь 09, 2012, 22:22
Здравствуйте.

Пытаюсь реализовать отображение лога чата через QWebView, возникли проблемы в реализации обновления информации, т.е. проблема с добавлением новых сообщений в конец страницы.

1.  Пробовал так:
Код:
builder->appendEventOld(this, event);             // клас, который формирует страницу целиком, т.е. в нем формируется лог, который затем выводится
webView->setHtml(builder->getDoc(), skinDir);  // тут
Проблемы: допустим в шаблоне есть javascript, который должен отрабатывать при "загрузке" и как-то менять страницу. Получается после отображения страницу нужно сохранить в builder, что бы новые ивенты добавлялись уже к этой странице, но как это сделать? QWebView рендерит в отдельном потоке, на сколько я понял, поэтому вызов
Код:
builder->saveDoc(webView->page()->mainFrame()->toHtml());
сразу после setHtml ни к чему хорошему не приводит. Пытался завязаться на сигналы loadStarted и loadFinished - не получилось.

2. пробовал так:
В builder формируется только новый код, который нужно добавить и затем вызывается что-то вроде
Код:
void addToDoc(QString add) {
webView->page()->mainFrame()->documentElement().appendInside(add);
}
Проблемы: не отрабатывает javascript, стили .css, определенные глобально (например, для body) так же не работают.

Буду рад любой помощи.