首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QWebEnginePage: toHtml返回一个空字符串

QWebEnginePage: toHtml返回一个空字符串
EN

Stack Overflow用户
提问于 2016-04-17 18:38:01
回答 2查看 3.5K关注 0票数 2

我需要从QWebEnginePage中检索一些html。我在文档中找到了方法toHtml,但它总是返回一个空字符串。我试过toPlainText,它可以工作,但这不是我所需要的。

代码语言:javascript
复制
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
}

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-07 23:27:41

我在QWebEngine周围转来转去。它很酷。我有以下工作要做。

在发出信号的情况下,lambada捕获必须是"=“或"this”。您还需要“可变”来修改捕获的副本。然而,toHtml()是异步的,所以即使捕获了html,在调用toHtml() in SomeFunction之后,它也不太可能直接可用。您可以通过使用信号和插槽来克服这一点。

代码语言:javascript
复制
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;
}
票数 4
EN

Stack Overflow用户

发布于 2016-08-12 14:58:19

我认为这个问题更多的是一个连接问题。您的代码在我的应用程序上运行得很好:

代码语言:javascript
复制
    connect(page, SIGNAL(loadFinished(bool)), this,   SLOT(pageLoadFinished(bool)));

..。

代码语言:javascript
复制
    page->load(QUrl("http://google.com/"));

...loading时间..。

代码语言:javascript
复制
 void MaClasse :: pageLoadFinished(bool s){
   page->toHtml([this](const QString &result){         
   qDebug()<<"html:";
   qDebug()<<result;
   item->setHtml(result);});
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36680604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档