JavaScript — QWebView разрешить всплывающие окна?

В моем проекте у меня есть QWebView, который загружает страницу, которая открывает всплывающее окно. Но окно не откроется. Я посмотрел в функцию createWindow, но я понятия не имею, как создать подкласс виджета. Вот некоторые настройки, которые я поместил в webView:

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

Какой самый простой способ разрешить моему веб-представлению разрешить всплывающие окна?

Спасибо за ваше время 🙂

1

Решение

Вам нужно переопределить 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 и поддерживать статический «глобальный» экземпляр.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]