2013-10-27 6 views
1

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

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

Что это самый простой способ, чтобы мой WebView, чтобы разрешить всплывающие окна?

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

ответ

1

Вам нужно переопределять метод createWindow QWebView в. Возвращенный 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(); 
} 

Имейте в виду, что печенье не разделяют между двумя QWebViews, так что вы также должны реализовать свой собственный менеджер печенья. Один из способов сделать это - унаследовать QNetworkCookieJar и хранить статический «глобальный» экземпляр.