2010-05-02 3 views
2

QT를 처음 접했고 테스트 브라우저를 만들려고 노력 중입니다. 지금 내가하려는 것은 js 기반 팝업 요청을 처리하는 것입니다. QT 문서를 읽은 후, QWebView :: createWindow 메서드를 다시 구현하여이를 수행해야한다는 것을 알게되었습니다.QT 4.6 (Webkit 포함) : 팝업 창 요청 (WebView :: createWindow)을 처리하는 방법은 무엇입니까?

이제이 방법을 다시 구현했지만 팝업 창이 트리거되는 링크를 클릭 할 때 호출되지 않는 것 같습니다.

아무도 도와 줄 수 있습니까? WebView 및 WebPage 클래스 모두를 서브 클래스 화해야합니까? 그렇다면 어떻게해야합니까? QT를 처음 접했을 때 나는 수 많은 검색을했고 아무 것도 발견하지 못했습니다.

모든 힌트와 조언을 미리 보내 주셔서 감사합니다.

답변

4

다음 옵션을 설정하는 것을 잊지 않았습니까?

view->settings()->setAttribute(QWebSettings::JavascriptEnabled, true); 
view->settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows, true); 

그리고 부모 클래스 createWindow() 메서드를 호출하는 것을 잊지 마십시오.

참고 : 의 만약 CreateWindow 함수() 메소드 명시 적으로 다시 구현에 그렇게하지 않는 관련 페이지, 이 메소드는 호출되지 않습니다, 재 구현되는 내용은 해당에 메모를 가지고있다. (주석 지역)

+0

@ 던컨 많은 도움을 주셔서 감사합니다. 다른 모든 js 호출이 완벽하게 작동하기 때문에 JavaScript가 활성화되어 있다고 확신합니다. 는 QWidget ::의 setAttribute를 호출 일치 기능 ... 나는이 코드를 사용했다 : myWebView-> 페이지를 나는 그러나 나는이 오류 메시지가 발생, JavascriptCanOpenWindows에 사용할 수 있도록의 setAttribute 호출을 사용하려고() -> view() -> setAttribute (QWebSettings :: JavascriptCanOpenWindows, true); 잘못 되었습니까? 나는 이것이 매우 멍청한 질문이라고 생각하며 어떤 통찰력에 대해서도 다시 한번 감사드립니다! –

0

신경 끄시 고 내 두 번째 질문은, 여기에 내가 새로운 창 요청 캡처 무슨 짓을했는지 (던컨의 힌트에 많은 감사를!) :이 개시 프로세스 내에서 사용

page()->settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows, true); 

사용자 지정 WebView 클래스

누군가에게 유용 할 수 있기를 바랍니다. 감사합니다.

+1

duncan의 답변을 수락 했어야합니다! – andrean

관련 문제