Cesar
Cesar

Reputation: 389

How to add css stylesheet to a QWebEngineView?

I'm trying to follow this Qt example for adding CSS stylesheet to a QWebEngineView, however, I'm getting this error:

use of undefined type 'QWebEngineScriptCollection'

at the line ui.webEngineView->page()->scripts().insert(script);

What I'm missing? Testing using qt 6.4 Visual Studio 2022, the project can be reproduced by simply adding a QWebEngineView to the ui, and

#include "stdafx.h"
#include "MainWindow.h"
#include <QWebEngineScript>

void MainWindow::insertStyleSheet(const QString& name, const QString& source, bool immediately)
{
    QWebEngineScript script;
    QString s = QString::fromLatin1("(function() {"\
        "    css = document.createElement('style');"\
        "    css.type = 'text/css';"\
        "    css.id = '%1';"\
        "    document.head.appendChild(css);"\
        "    css.innerText = '%2';"\
        "})()").arg(name).arg(source.simplified());

    if (immediately)
        ui.webEngineView->page()->runJavaScript(s, QWebEngineScript::ApplicationWorld);

    script.setName(name);
    script.setSourceCode(s);
    script.setInjectionPoint(QWebEngineScript::DocumentReady);
    script.setRunsOnSubFrames(true);
    script.setWorldId(QWebEngineScript::ApplicationWorld);
    ui.webEngineView->page()->scripts().insert(script);
}


MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
    ui.setupUi(this);
}

Upvotes: 0

Views: 424

Answers (1)

Cesar
Cesar

Reputation: 389

Fixed it. The correct include is:

#include <QtWebEngineCore/qwebenginescriptcollection.h>

Upvotes: 0

Related Questions