Я установил новейшую версию Qt (на Webkit в Qt5.2 был WTFcrash). Я пытаюсь получить контент моего сайта, когда страница загружена (и это так):
QString sHtml;
view.page()->toHtml([&](const QString& result){sHtml = result;qDebug() << result;});
Но sHtml
пуст, и отладка не вызвана. Что я делаю неправильно?
Нашел это, toPlainText
работать должным образом. Все еще не знаю, почему toHtml не делает.
Вы не делаете ничего плохого, вы просто вызываете асинхронный функция :
Асинхронный метод для извлечения содержимого страницы в виде HTML, вложенный
в тегах HTML и BODY. После успешного завершения resultCallback
вызывается с содержанием страницы.
HTML не будет доступен сразу после звонка toHtml()
, Вместо этого вы можете использовать некоторые сигналы и слоты, чтобы преодолеть это:
protected slots:
void handleHTML(QString sHTML);
signals:
void getHTML(QString sHTML);
void yourClass::yourFunction()
{
connect(this, SIGNAL(getHTML(QString)), this, SLOT(handleHTML(QString)));
view->page()->toHtml([this](const QString& result) mutable {emit getHTML(result);});
}
void yourClass::handleHTML(QString sHTML)
{
qDebug()<< "The HTML is :" << sHTML;
}