QWebEnginePage:toHtml 返回一个空字符串
Posted
技术标签:
【中文标题】QWebEnginePage:toHtml 返回一个空字符串【英文标题】:QWebEnginePage: toHtml returns an empty string 【发布时间】:2016-04-17 18:38:01 【问题描述】:我需要从QWebEnginePage
中检索一些 html。我在文档中找到了方法toHtml,但它总是返回一个空字符串。我试过toPlainText
它有效,但这不是我需要的。
MyClass::MyClass(QObject *parent) : QObject(parent)
_wp = new QWebEnginePage();
_wp->settings()->setAttribute(QWebEngineSettings::AutoLoadImages, false);
_wp->settings()->setAttribute(QWebEngineSettings::javascriptEnabled, true);
connect(_wp, SIGNAL(loadFinished(bool)), this, SLOT(wpLoadFinished(bool)));
void MyClass::start()
_wp->load(QUrl("http://google.com/"));
void MyClass::wpLoadFinished(bool s)
_wp->toHtml(
[] (const QString &result)
qDebug()<<"html:";
qDebug()<<result;
); // return empty string
/*_wp->toPlainText(
[] (const QString &result)
qDebug()<<"txt:";
qDebug()<<result;
);*/ //works perfectly
我做错了什么?
【问题讨论】:
我将 load() 函数放在 connect 语句之后,删除了 start() 函数,它与 toHtml() 完美配合。 【参考方案1】:我对 QWebEngine 有所了解。这很酷。我有以下工作。
在发出信号的情况下,lambda 捕获必须是“=”或“this”。您还需要“可变”来修改捕获的副本。然而,toHtml()
是异步的,因此即使您捕获了 html,它也不太可能在调用 SomeFunction
中的 toHtml()
后直接可用。您可以通过使用信号和插槽来克服这个问题。
protected slots:
void handleHtml(QString sHtml);
signals:
void html(QString sHtml);
void MainWindow::SomeFunction()
connect(this, SIGNAL(html(QString)), this, SLOT(handleHtml(QString)));
view->page()->toHtml([this](const QString& result) mutable emit html(result););
void MainWindow::handleHtml(QString sHtml)
qDebug()<<"myhtml"<< sHtml;
【讨论】:
【参考方案2】:我认为问题更多是连接问题。您的代码在我的应用程序上运行良好:
connect(page, SIGNAL(loadFinished(bool)), this, SLOT(pageLoadFinished(bool)));
...
page->load(QUrl("http://google.com/"));
...加载时间...
void MaClasse :: pageLoadFinished(bool s)
page->toHtml([this](const QString &result)
qDebug()<<"html:";
qDebug()<<result;
item->setHtml(result););
【讨论】:
这没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review 我不需要您的礼貌告诉我此代码在我的应用程序上运行良好。根据它确实有效的事实,我认为这是答案的一部分,不是吗?以上是关于QWebEnginePage:toHtml 返回一个空字符串的主要内容,如果未能解决你的问题,请参考以下文章
QWebEnginePage 中的 setFeaturePermission 成员函数如何工作?
将 QWebEngineHistory 保存并加载到 QWebEnginePage
QWebEnginePage 与 javascript 交互不起作用?
是否可以在屏幕外渲染 QWebEnginePage/QWebEngineView?