gpt4 book ai didi

c++ - QWebEnginePage : toHtml returns an empty string

转载 作者:搜寻专家 更新时间:2023-10-31 01:35:49 26 4
gpt4 key购买 nike

我需要从 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
}

我做错了什么?

最佳答案

我正在研究 QWebEngine。这很酷。我有以下工作。

在发射信号的情况下,lambada 捕获需要是“=”或“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;
}

关于c++ - QWebEnginePage : toHtml returns an empty string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36680604/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com