В моем проекте у меня есть QWebView, который загружает страницу, которая открывает всплывающее окно. Но окно не откроется. Я посмотрел в функцию createWindow, но я понятия не имею, как создать подкласс виджета. Вот некоторые настройки, которые я поместил в webView:
QWebSettings *settings = ui->webView_2->settings();
settings->setAttribute(QWebSettings::JavascriptEnabled, true);
settings->setAttribute(QWebSettings::JavascriptCanOpenWindows, true);
Какой самый простой способ разрешить моему веб-представлению разрешить всплывающие окна?
Спасибо за ваше время 🙂
Вам нужно переопределить 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 и поддерживать статический «глобальный» экземпляр.
Других решений пока нет …