【问题标题】:How to get website content from QWebEnginePage?如何从 QWebEnginePage 获取网站内容?
【发布时间】:2016-07-06 21:29:45
【问题描述】:

我安装了最新版本的 Qt(在 Webkit 上,Qt5.2 有 WTFCrash)。我尝试在页面加载时获取我网站的内容(确实如此):

QString sHtml;
view.page()->toHtml([&](const QString& result){sHtml = result;qDebug() << result;});

但是sHtml 是空的,并且没有调用调试。我做错了什么?

【问题讨论】:

    标签: c++ qt qt5 qtwebengine qt5.6


    【解决方案1】:

    你没有做错什么,你只是在调用一个异步的function

    以 HTML 格式检索页面内容的异步方法,包含在内 在 HTML 和 BODY 标签中。成功完成后,resultCallback 为 使用页面内容调用。

    在调用toHtml() 后,HTML 将无法直接使用。相反,您可以使用一些信号和插槽来克服这个问题:

    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;
    }
    

    【讨论】:

      【解决方案2】:

      找到了,toPlainText 工作正常。还是不知道为什么 toHtml 没有。

      【讨论】:

      • 可能是因为 sHtml 在调用 toHtml 时超出了范围。
      猜你喜欢
      • 2020-07-24
      • 1970-01-01
      • 1970-01-01
      • 2013-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-30
      相关资源
      最近更新 更多