QWebView 允许弹出窗口

QWebView allow pop-ups?

本文关键字:窗口 许弹出 QWebView      更新时间:2023-10-16

在我的项目中,我有一个QWebView,它加载了一个打开弹出窗口的页面。但是窗口不会打开。我研究了createWindow函数,但我不知道如何对小部件进行子类化。这些是我放在 webView 上的一些设置:

QWebSettings *settings = ui->webView_2->settings();
settings->setAttribute(QWebSettings::JavascriptEnabled, true);
settings->setAttribute(QWebSettings::JavascriptCanOpenWindows, true);

允许我的 webView 允许弹出窗口的最简单方法是什么?

感谢您抽出宝贵时间:)

你需要重新实现 QWebView 的 createWindow 方法。返回的 QWebView 将自动设置为所需的 URL。

例如:

QWebView* WebView::createWindow(QWebPage::WebWindowType type)
{
    // WindowDialog is just a simple QDialog with a QWebView
    WindowDialog* dlg = new WindowDialog(this);
    dlg->show();
    // A method to retrieve a pointer to the QWebView of the dialog is needed
    return dlg->webView();
}

请记住,Cookie 不会在两个 QWebView 之间共享,因此您还需要实现自己的 cookie 管理器。一种方法是继承QNetworkCookieJar,并保留一个静态的"全局"实例。