нашел решение!
спасибо всем за наводку!
Программа построчно выводит текст:
test <номер строки> --- <время в милисекундах между последним выводом и текущим>Все оказалось как всегда просто.
evaluateJavaScript() позволяет выполнить скрипт на html страничке.
сам скрипт тоже простой, его идея в том чтобы найти нужный элемент по id и потом с помощью функции innerHTML добавить в него элемент (текст).
вот код программы и html странички, которую гружу QWebView
App#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QUrl>
#include <QWebFrame>
#include <QTimer>
#include <QDateTime>
MainWindow* mainWindow;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->webView->setUrl(QUrl("qrc:/Html/chat.html"));
QTimer *timer = new QTimer(this);
timer->setInterval(1);
connect(timer, SIGNAL(timeout()), this, SLOT(onTime()));
timer->start();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::onTime()
{
static int i=1;
static QDateTime lastTime = QDateTime::currentDateTime();
QDateTime curTime = QDateTime::currentDateTime();
qint64 deltaTime = curTime.toMSecsSinceEpoch() - lastTime.toMSecsSinceEpoch();
lastTime = curTime;
QString jcode = QString("var chat_div = document.getElementById('div_chat');\r\n"
"chat_div.innerHTML += 'text %1 --- %2<br>';\r\n"
).arg(i).arg(deltaTime);
i++;
QWebFrame *frame = ui->webView->page()->mainFrame();
bool shouldScrollFurther = (frame->scrollBarMaximum(Qt::Vertical) == frame->scrollBarValue(Qt::Vertical));
frame->evaluateJavaScript(jcode);
QApplication::processEvents();
if (shouldScrollFurther)
scrollToEnd();
}
void MainWindow::scrollToEnd()
{
QWebFrame *frame = ui->webView->page()->mainFrame();
int scrollMax = frame->scrollBarMaximum(Qt::Vertical);
frame->setScrollBarValue(Qt::Vertical, scrollMax);
}
chat.html<html>
<body">
<div id="div_chat">
</div>
</body>
</html>
В связи с решением возникла другая задача. После 2000 тысяч строк QWebView начинает жутко тормозить и каждую последую сроку выводить все медленнее и медленнее (линейно). Есть идеи как это решить?
Хочу использовать QwebView для вывода отчета, а в нем строк немерено может быть.