【问题标题】:Qt How to get sender of sender signal or how to know loadStarted url of QWebEngineView?Qt 如何获取发送者信号的发送者或如何知道 QWebEngineView 的 loadStarted url?
【发布时间】:2017-11-01 14:17:59
【问题描述】:

QWebEngineView 有信号 void loadStarted()。当它从 QWebEnginePage 接收到时,它会发出这个信号。 QWebEnginePage 从 QWebEnginePagePrivate 覆盖了这个函数,它是 void loadStarted(const QUrl &provisionalUrl, bool isErrorPage = false),但在 QWebEnginePage 类参数中,provisionalUrl 标记为 Q_UNUSED(),但我想知道它的值。我该怎么做?

【问题讨论】:

  • 或者如何通过QWebEngineView获取表单方法“POST”或“GET”的参数以及点击显示网页的超链接url?
  • 调用 QWebEnginePage::url() 的结果怎么样,这不告诉你哪个 URL/页面已经被加载/查看了吗?另请查看 QWebEnginePage::requestedUrl() - 当前查看的框架请求加载的 URL。如果发生 DNS 解析或重定向,则 URL 可能与 url() 返回的不同。
  • 我试过 QWebEnginePage::requestedUrl() - 它返回已加载页面的地址。我需要拦截页面按钮按下和链接点击。要知道点击了哪个链接,请生成新网页并在其上导航用户。

标签: c++ qt signals-slots qwebengineview qwebenginepage


【解决方案1】:

如果你必须拦截导航请求并按导航类型过滤它们,你能做的最好的就是重写 QWebEnginePage::acceptNavigationRequest() 虚函数。

https://doc.qt.io/qt-5/qwebenginepage.html#acceptNavigationRequest

class NavigationRequestOverride : public QWebEnginePage
{
public:
    NavigationRequestOverride(QObject* parent) : QWebEnginePage(parent) {}
protected:
    virtual bool acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame)
    {
       // Here goes your logic
    }
};

【讨论】:

    猜你喜欢
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 2011-11-08
    • 2015-02-14
    • 2020-05-11
    • 1970-01-01
    相关资源
    最近更新 更多