源代码大师 2025-03-26 20:40 采纳率: 20%
浏览 7

qtwebengine加载了一个网页,监听网页按钮点击后的消息

qtwebengine加载了一个网页www.bocang.com, 点击网页中某一个按钮,如何获取或者监听该按钮点击后的 “收到消息data”“来源origin”"发送方source" c+ qt 代码实现

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2025-03-26 20:40
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    QtWebEngine 加载网页,监听网页按钮点击后的消息

    QtWebEngine 提供了多种方式来监听网页中的事件,包括按钮点击事件。下面是一种常见的解决方案:

    1. 使用 QWebEnginePagerunJavaScript 方法来执行 JavaScript 代码,获取按钮点击事件的信息。
    QWebEnginePage *page = ...; // 获取 QWebEnginePage 对象
    page->runJavaScript("document.addEventListener('click', function(event) { ... });");
    

    在上面的代码中,我们使用 runJavaScript 方法来执行 JavaScript 代码,添加一个点击事件监听器。事件监听器将在按钮点击时被触发,并将事件对象 event 传递给回调函数。

    1. 使用 QWebEnginePagejavaScriptConsoleMessage 信号来监听 JavaScript console 消息。
    QWebEnginePage *page = ...; // 获取 QWebEnginePage 对象
    connect(page, &QWebEnginePage::javaScriptConsoleMessage, this, &MyClass::onJavaScriptConsoleMessage);
    
    void MyClass::onJavaScriptConsoleMessage(const QString &message, int lineNumber, const QString &sourceId)
    {
        if (message.startsWith("Button clicked")) {
            // 处理按钮点击事件
        }
    }
    

    在上面的代码中,我们使用 javaScriptConsoleMessage 信号来监听 JavaScript console 消息。如果消息包含 "Button clicked" 字符串,我们就处理按钮点击事件。

    1. 使用 QWebEnginePageacceptNavigationRequest 方法来监听网页中的链接点击事件。
    QWebEnginePage *page = ...; // 获取 QWebEnginePage 对象
    page->setAcceptNavigationRequest(true);
    
    void MyClass::acceptNavigationRequest(QWebEnginePage *page, const QUrl &url, QWebEnginePage::NavigationType type)
    {
        if (type == QWebEnginePage::NavigationTypeLinkClicked) {
            // 处理链接点击事件
        }
    }
    

    在上面的代码中,我们使用 acceptNavigationRequest 方法来监听网页中的链接点击事件。如果链接点击事件被触发,我们就处理事件。

    这些方法可以单独使用,也可以组合使用以实现更复杂的事件监听器。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月26日