현재 위치 - 인적 자원 플랫폼망 - APP 자료 - QT 를 사용하여 웹 및 로컬 혼합 응용 프로그램을 개발하는 방법
QT 를 사용하여 웹 및 로컬 혼합 응용 프로그램을 개발하는 방법
QT 를 사용하여 웹 및 로컬 혼합 응용 프로그램을 개발하는 방법은 이 문서의 내용입니다. Qt 는 로컬 C++ 객체와 자바스크립트 간의 완벽한 통합을 제공하며 로컬과 웹 간의 혼합 애플리케이션 개발에 이상적인 플랫폼입니다.

첫째, Qt Webkit 통합

Qt WebKit 과 QtNetwork 모듈을 통합하면 로컬 데스크톱 및 웹 혼합 응용 프로그램을 완벽하게 개발할 수 있으며 JavaScript, 스타일 시트, 웹 컨텐츠 및 Qt 구성 요소를 자유롭게 혼합할 수 있습니다. Webkit 은 매우 성숙한 웹 브라우징 엔진이다. 이 유명한 엔진은 Qt 에 통합되어 있다. QtWebkit 을 사용하면 C++ 에서 JavaScript 를 실행하거나 웹 페이지에 C++ 객체를 통합하고 JavaScript 를 통해 상호 작용할 수 있습니다.

현대 HTML 렌더링 엔진은 혼합 개발의 절반에 불과하며 나머지 절반은 로컬 응용 프로그램과 렌더링 객체 간의 상호 작용입니다. QT 의 Webkit 통합은 이 솔루션을 제공합니다.

1. object 태그를 사용하여 Qt Widgets 구성 요소를 포함합니다. 이렇게 하면 C++ 코드를 사용하는 Qt 구성 요소가 웹 페이지 스킨의 일부로 웹 페이지에 포함될 수 있습니다.

2. JavaScript 에서 C++ 객체에 액세스합니다. 웹 스크립트가 데이터 구조에 직접 액세스할 수 있도록 JavaScript 환경에 C++ 객체를 삽입할 수 있습니다.

3. Qt 에서 JavaScript 를 실행합니다. C++ 의 웹 환경에서 JavaScript 함수를 호출하여 웹 이벤트를 트리거할 수 있습니다.

4.*** 클라이언트 스토리지를 즐기십시오. 자바스크립트와 C++ 에서 모두 데이터베이스에 액세스할 수 있으므로 오프라인일 때 * * * 많은 양의 데이터를 즐길 수 있습니다.

둘째, 포함된 Qt 객체와 상호 작용합니다

QWebView 구성 요소를 사용하여 웹 페이지에 C++ 객체를 포함하는 두 가지 방법이 있습니다. 웹 페이지의 JavaScript 에 C++ 객체를 추가하거나 플러그인을 만들어 object 태그가 있는 웹 페이지에 포함할 수 있습니다.

두 번째 방법은 시작하기가 더 쉽다. 위젯 구성 요소가 웹 페이지에 배치되면 웹 페이지의 JavaScript 함수는 일반 함수처럼 모든 공용 슬롯에 액세스합니다.

웹 페이지에 위젯을 추가하려면 먼저 q 웹 객체 위젯을 사용할 수 있음을 알려야 합니다. 이것은 하위 클래스화 QWebPlugFactory 를 통해 이루어진다.

두 가지 방법인 plugs 와 create 를 다시 구현해야 합니다. Plugs 메소드는 웹 페이지 위젯을 사용할 수 있음을 알리고 create 메소드는 요청에 따라 위젯을 만듭니다.

HTML 웹 페이지에서 위젯은 object 태그를 사용하여 만들어집니다. 예를 들어, 다음 태그는 응용 프로그램 /x-qt-colorlabel 구성 요소를 만들려고 합니다.

& lt objecttype = "application/x-Qt-colorlabel" width = "50px" height = "20px" id = "label

이렇게 만들려면 플러그인 사용을 허용하고 Q 웹 플러그인의 팩토리 클래스를 알려야 합니다. 다음 코드에서 ColorLabelFactory 는 application/x-qt-colorlabel 의 요청에 따라 인스턴스를 만듭니다.

Qwebsettings:: globalsettings ()-> Setattribute (qwebsettings:: pluginsenabled, true); 네트워크 뷰-> 페이지 ()-> Setpluginfactory (newcolorlabelfactory (this));

ColorLabel 에는 웹 페이지의 JavaScript 에 자동으로 사용할 수 있는 열린 slot: chagneColor () 가 있습니다. 웹 페이지에 해당 요소에 대한 링크를 삽입하면 C++ 함수를 간단히 활성화할 수 있습니다.

& ltahref =' JavaScript: document.getelementbyid ("label"). Changecolor (); ‘& gt 색상 변경! & lt/a & gt;;

이벤트를 반대 방향으로 푸시하려면 JavaScript 문서의 컨텍스트에서 객체를 사용할 수 있도록 해야 합니다. Q 페이지의 각 QWebFrame 에 대해 addToJavaScriptWindowObject 메서드를 호출합니다. 이 메서드를 사용하면 이름으로 JavaScipt 컨텍스트에 객체를 추가할 수 있습니다.

네트워크 뷰-> 페이지 ()-> 메인프레임 ()-> Addtojavascriptwindowobject ("이벤트 소스", 새 이벤트 소스 (this));

새로 추가된 객체 eventSource 의 신호를 연결하려면 JavaScript 코드 한 조각을 추가하고 evaluateJavaScript 메서드를 사용합니다.

완료되었습니다. 다음 코드는 eventSource 객체의 signalName 신호를 JavaScript 함수 destFunction 에 연결합니다.

네트워크 뷰-> 페이지 ()-> 메인프레임 ()-> Evaluate JavaScript ("eventsource.signalname.connect (destfunction)"; );

표준 브라우저에서 보는 JavaScript 페이지에 객체를 추가하면 알아야 할 신호가 있습니다. 매번 자바스크립트

내용이 지워지면 프레임이 javaScriptWindowObjectCleared 를 해제합니다.

신호. Qt 객체를 항상 사용할 수 있도록 하려면 이 신호에 연결하고 여기서 addToJavaScriptWindowObject 함수를 호출해야 합니다.