Cómo utilizar QT para el desarrollo de aplicaciones híbridas locales y web
1. Integración de Qt Webkit Al utilizar la integración de Webkit de Qt y el módulo QtNetwork, puede desarrollar completamente aplicaciones híbridas web y de escritorio locales. Puede combinar libremente JavaScript, hojas de estilo, contenido web y componentes de Qt. Webkit es un motor de navegación web muy maduro. Qt integra este famoso motor. A través de QtWebkit, puede ejecutar JavaScript en C++ o integrar objetos C++ en páginas web e interactuar con estos objetos a través de JavaScript. Un motor de renderizado HTML moderno es sólo la mitad del desarrollo híbrido. La otra mitad es la interacción entre las aplicaciones nativas y los objetos de renderizado. La integración de Webkit de QT proporciona esta solución: 1. Utilice la etiqueta de objeto para incrustar componentes de Qt Widgets. Esto permite incluir componentes Qt que utilizan código C++ en páginas web como parte de la apariencia de la página web. 2. Acceda a objetos C++ en JavaScript. Puede insertar objetos C++ en el entorno JavaScript para permitir que los scripts web accedan directamente a sus estructuras de datos. 3. Ejecute JavaScript en Qt. Puede llamar a funciones de JavaScript en el entorno web en C++ para activar eventos web. 4.*** Compartir almacenamiento del cliente. Tiene la capacidad de acceder a bases de datos tanto en JavaScript como en C++, por lo que puede compartir grandes cantidades de datos incluso cuando no esté conectado. 2. Interactuar con objetos Qt incrustados. Utilizando el componente QWebView, existen dos métodos para incrustar objetos C++ en páginas web. Puede agregar objetos C++ en el JavaScript de la página web, o puede crear un complemento e incrustarlo en la página web usando la etiqueta de objeto.
El segundo método es más fácil para empezar. Cuando un componente de widget se coloca en una página web, las funciones JavaScript de la página web acceden a todos sus espacios públicos, al igual que las funciones normales. Para agregar un widget a una página web, primero debe decirle a su objeto QWebPage que el widget está disponible subclasificando QWebPlugFactory. Debe volver a implementar dos métodos: complementos y crear. El método plugs notifica a la página web que el widget está disponible y el método create crea el widget según la solicitud. En las páginas web HTML, los widgets se crean utilizando la etiqueta de objeto. Por ejemplo, la siguiente etiqueta intenta crear un componente aplicación/x-qt-colorlabel. Para aprovechar esta creación, debe habilitar el uso de complementos e indicarle a QWebpage la clase de fábrica de complementos. En el siguiente código, ColorLabelFactory creará la instancia correspondiente de acuerdo con la solicitud de application/x-qt-colorlabel. QWebSettings::globalSettings()->setAttribute(QWebSettings::PluginsEnabled, true); webView->page()->setPluginFactory(new ColorLabelFactory(this)); páginas JavaScript está disponible automáticamente. Insertar un enlace a este elemento en la página web activa la función C++ de forma sencilla. ¡Cambie de color!a> Para avanzar el evento en la dirección opuesta, debe hacer que su objeto esté disponible en el contexto del documento JavaScript. Para llamar al método addToJavaScriptWindowObject en cada QWebFrame de QWebPage. Este método le permite agregar un objeto al contexto de JavaScript por su nombre.
webView->page()->mainFrame()->addToJavaScriptWindowObject( "eventSource", new eventSource( this ) ); Para conectar la señal del objeto eventSource recién agregado, agregue un fragmento de código JavaScript y use el método evaluaJavaScript para completar. . El siguiente código conectará la señal signalName del objeto eventSource a una función de JavaScript destFunction. webView->page()->mainFrame()->evaluateJavaScript( "eventSource.signalName.connect(destFunction);" ); si agrega un objeto a una página JavaScript vista en un navegador estándar, hay una señal requerida Saber. Cada vez que se borra el contenido de JavaScript, Frame libera la señal javaScriptWindowObjectCleared.