En esta página

QWebEngineUrlSchemeHandler Class

La clase QWebEngineUrlSchemeHandler es una clase base para manejar esquemas de URL personalizados. Más...

Cabecera: #include <QWebEngineUrlSchemeHandler>
CMake: find_package(Qt6 REQUIRED COMPONENTS WebEngineCore)
target_link_libraries(mytarget PRIVATE Qt6::WebEngineCore)
qmake: QT += webenginecore
Hereda: QObject

Funciones Públicas

QWebEngineUrlSchemeHandler(QObject *parent = nullptr)
virtual ~QWebEngineUrlSchemeHandler()
virtual void requestStarted(QWebEngineUrlRequestJob *request) = 0

Descripción detallada

Un gestor de esquemas personalizado es, a grandes rasgos, similar a una aplicación web servida a través de HTTP. Sin embargo, como los esquemas personalizados se integran directamente en el motor web, tienen la ventaja en términos de eficiencia y seguridad: No hay necesidad de generar y analizar mensajes HTTP o de transferir datos a través de sockets, ni de interceptar o monitorizar el tráfico.

Para implementar un esquema de URL personalizado para QtWebEngine, primero hay que crear una instancia de QWebEngineUrlScheme y registrarla mediante QWebEngineUrlScheme::registerScheme().

Como los esquemas personalizados se integran directamente en el motor web, no tienen por qué seguir las normas de seguridad estándar que se aplican a los contenidos web ordinarios. Dependiendo de la configuración elegida, el contenido servido a través de un esquema personalizado puede tener acceso a recursos locales, estar configurado para ignorar las reglas de Content-Security-Policy o, por el contrario, no tener acceso a ningún otro contenido. Si va a ser accedido por contenido normal, asegúrese de que el acceso de origen cruzado está habilitado, y si se accede desde HTTPS, que está marcado como seguro.

Nota: Asegúrese de crear y registrar el objeto scheme antes de instanciar el objeto QGuiApplication o QApplication.

Luego, debes crear una clase derivada de QWebEngineUrlSchemeHandler, y reimplementar el metodo requestStarted().

Por último, instanciar el objeto scheme handler mediante QWebEngineProfile::installUrlSchemeHandler() o QQuickWebEngineProfile::installUrlSchemeHandler().

class MySchemeHandler : public QWebEngineUrlSchemeHandler
{
public:
    MySchemeHandler(QObject *parent = nullptr);
    void requestStarted(QWebEngineUrlRequestJob *job)
    {
        const QByteArray method = job->requestMethod();
        const QUrl url = job->requestUrl();

        if (isValidUrl(url)) {
            if (method == QByteArrayLiteral("GET"))
                job->reply(QByteArrayLiteral("text/html"), makeReply(url));
            else // Unsupported method
                job->fail(QWebEngineUrlRequestJob::RequestDenied);
        } else {
            // Invalid URL
            job->fail(QWebEngineUrlRequestJob::UrlNotFound);
        }
    }
    bool isValidUrl(const QUrl &url) const // ....
    QIODevice *makeReply(const QUrl &url) // ....
};

int main(int argc, char **argv)
{
    QWebEngineUrlScheme scheme("myscheme");
    scheme.setSyntax(QWebEngineUrlScheme::Syntax::HostAndPort);
    scheme.setDefaultPort(2345);
    scheme.setFlags(QWebEngineUrlScheme::SecureScheme);
    QWebEngineUrlScheme::registerScheme(scheme);

    // ...
    QApplication app(argc, argv);
    // ...

    // installUrlSchemeHandler does not take ownership of the handler.
    MySchemeHandler *handler = new MySchemeHandler(parent);
    QWebEngineProfile::defaultProfile()->installUrlSchemeHandler("myscheme", handler);
}

Véase también QWebEngineUrlScheme.

Documentación de las funciones miembro

QWebEngineUrlSchemeHandler::QWebEngineUrlSchemeHandler(QObject *parent = nullptr)

Crea un nuevo gestor de esquema de URL.

El manejador se crea con el padre parent.

[virtual noexcept] QWebEngineUrlSchemeHandler::~QWebEngineUrlSchemeHandler()

Elimina un gestor de esquema de URL personalizado.

[pure virtual] void QWebEngineUrlSchemeHandler::requestStarted(QWebEngineUrlRequestJob *request)

Este método es llamado cada vez que se inicia una petición request para el esquema registrado.

Este método debe ser reimplementado por todos los gestores de esquemas de URL personalizados. La petición es asíncrona y no necesita ser gestionada inmediatamente.

Véase también QWebEngineUrlRequestJob.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.