2012-08-23 2 views
1

HTML 안에 테이블이 있습니다. QWebView에 제출하고 있습니다.QWebView에 대한 심각한 제한

테이블은 응용 프로그램의 수명주기 동안 커집니다.

측면의 html QString을 관리하고 모든 업데이트에 "setHtml"을 사용하면 테이블에 1000 개의 행을 추가하는 데 성능 문제가 발생합니다.

QWebView에서 직접 HTML에 액세스하여 매번 새 테이블 행을 삽입하여 html을 직접 업데이트 할 수있는 방법이 없습니까?

+0

내가 자바 스크립트를 사용해야합니까? 그냥 새 테이블 행을 삽입하는 자바 스크립트 함수를 호출? Qt에서 QWebView에서 자바 스크립트 함수를 호출 할 수 있습니까? – JasonGenX

답변

1

나는 당신이 원하는 것은 가장 낮은 레벨의 객체 인 QWebFrame과 상호 작용하는 것이라고 믿습니다. 다음을 통해 액세스 할 수 있습니다. QWebView->page()->mainFrame()

QWebFrame에서 evaluateJavaScript()을 사용하여 페이지에 미리보기를 보내기 만하면됩니다.

또는 Qt 코드와 자바 스크립트 페이지 사이를 연결하는 addToJavaScriptWindowObject을 사용하여 프레임에 QObject를 등록 할 수 있습니다. more in detail here을 읽을 수 있습니다. 그러나이 방법은 자바 스크립트 쪽에서 함수를 "슬롯"으로 정의하고 QObject에 정의 된 신호 (예 : updateTable())에 연결하게합니다. 그런 다음 Qt 측에서 무언가를하고 해당 신호로 데이터를 내보낼 때마다 자바 스크립트가이를 잡아서 처리합니다.

Qt는

QWebFrame *frame = myWebPage->mainFrame(); 
frame->addToJavaScriptWindowObject("tableHandler", tableHandlerObject); 

에 javscript에게

function handleTableUpdate() { ... } 
... 
tableHandler.updateReady.connect(handleTableUpdate);