Qué es un Plugin QML

Nuestro buen amigo Paco Satu√© nos deja caer en uno de nuestros √ļltimos art√≠culos que ser√≠a interesante aclarar para toda la comunidad Velneo una serie de cuestiones:

Paco Satué

marzo 8, 2018 | Responder

Hola Jorge.

Las preguntas serían:

‚Äď ¬Ņ qu√© es realmente un plugin QML ?
‚Äď ¬Ņ necesito unos conocimientos medios de C++ ?
‚Äď ¬Ņ existen en Internet desarrollos en Qt que sean f√°cilmente importables a Velneo como plugins ?
‚Äď ¬Ņ √©sta ser√≠a una buena forma de extender Velneo y en ese caso, por qu√© no se hace m√°s a menudo ?

Saludos y gracias por los artículos de excelente nivel.
Paco Satué

Paco tiene razón… y vamos a dársela atendiendo a esta cuestiones y otras que puedan ser necesarias para clarificar que es eso de un plugin QML y como nos afecta a los desarrolladores Velneo.

 

Qué es un plugin QML

Un plugin QML es una posibilidad de extensibilidad que tiene QML y por ende Velneo. Nos permite extender su funcionalidad de una forma modular (los módulos son los plugins).

Estos plugins pueden contener código C/C++, código javascript y código QML. Se pueden desarrollar combinando las tres tecnologías, haciendo que sea realmente interesante.

Lo habitual es que sea un componente C/C++ con peque√Īas partes en QML y javascript.

En caso de requerir solo de capacidades QML y javascript no es necesario desarrollar un plugin c++, con integrarlo como un componente dentro de nuestro desarrollo QML sería suficiente.

Si nos fijamos uno de ellos, veremos que la dispone de funcionalidades desarrolladas de forma mixta (C/C++, código javascript y código QML).

Fíjate en el siguiente directorio de tu instalación de Velneo.

image

Como puedes observar, el plugin QML QtMultimedia, está formado por una dll (resultado de compilar código c/c++), un fichero QML (Video.qml) y un fichero de configuración (qmldir).

Si abrimos el fichero Video.qml con un editor de texto podemos observar como dentro del mismo hay fragmentos de código JavaScript.

image

Observar esta cuestión nos permite vislumbrar en que consiste un plugin QML (técnicamente hablando).

Plugins QML en Qt

Dentro de Qt 5 existen multitud de plugins QML. Parte de ellos integrados dentro de la plataforma base, otros como extensiones dentro del proyecto Qt y otros de terceros (de código abierto o cerrado).

En caso de ser plugins QML/C++ requerimos compilarlos para cada plataforma. Esto provoca que sea más complejo técnicamente de lo deseado.

 

Plugins QML en Velneo

Usarlos dentro de Velneo consiste en poco más que pegarlos en la ubicación correcta (si ya los tienes compilados) e importarlos dentro de tus formularios o listas QML de Velneo.

Actualmente podemos extender el vClient y el vDevelop mediante plugins QML.

En el mundo Velneo, no hay ning√ļn soporte para esta capacidad de extender nuestras herramientas, pero lo cierto es que tampoco es que nos haga demasiada falta.

 

Necesito saber C++ para desarrollar plugins QML

Sin dudas.

Por desgracia, necesitas algo m√°s que el conocimiento b√°sico:

  • Por un lado, necesitas conocer C y C++ (nivel medio).
  • Por otro, necesitas conocer QML y JavaScript (no es demasiado complejo, pero requiere de cierto esfuerzo). Recuerda que ya hemos escrito alg√ļn art√≠culo sobre como compilar
  • Por otro, la forma de declarar un plugin (no es demasiado compleja). Tenemos escrito otro¬† art√≠culo sobre como crear tus plugins, no dudes en leerlo.
  • Por otro, necesitas conocer la plataforma Qt en cada sistema operativo, no es lo mismo compilar en windows, linux o iOS (la verdad es que no es tan simple como puede parecer).
  • Tambi√©n necesitas conocer herramientas tales como compiladores, enlazadores, JDK, SDK, XCode, CMake, QMake, Git‚Ķ

Vamos… que no está al alcance de todo el mundo.

 

Proyectos Qt que se puedan incorporar como plugins Velneo

Proyectos Qt hay muchos. Que se puedan integrar de forma directa en Velneo, pocos.

 

Plugins que requieren poco esfuerzo

En los proyectos Qt/QML que hay, el soporte de la comunidad de desarrollo Qt es medio/bajo. Podríamos empezar por esta lista de recursos disponibles Qt/QML:

https://github.com/mikalv/awesome-qt-qml

En algunos de ellos, solo hay que coger la instrucciones del proyecto, compilarlos para cada plataforma y volcar los binarios adecuadamente. En otros… no es tan simple.

 

Plugins que requieren de esfuerzo medio-alto

Por otro lado, tambi√©n hay proyectos, que haciendo un esfuerzo medio/alto se podr√≠an convertir en plugins QML. Tendr√≠amos que ver si funcionalmente son necesarios, estudiar el c√≥digo fuente, desarrollar las clases que intermedien y por √ļltimo crear y compilar los plugins. De estos hay muchos m√°s.

https://github.com/JesseTG/awesome-qt

https://github.com/skhaz/awesome-qt

https://github.com/fffaraz/awesome-qt

https://github.com/insideqt/awesome-qt

 

Plugins que requieren de esfuerzo alto

Y ya puestos… si cogemos C y C++ las posibilidades son infinitas, pero el esfuerzo es mucho mayor.

https://github.com/fffaraz/awesome-cpp

 

Es una buena forma de extender Velneo

La verdad es que los plugins QML son una poderosa forma de extender Velneo, tal vez la más poderosa. Pero también es cierto, que los esfuerzos necesarios son medio/altos, y eso echa para atrás a muchos desarrolladores de la comunidad Velneo.

Este es el motivo por el que hemos decidido caminar en esta dirección, para ayudaros a abrir camino en esta difícil tarea. Los resultados saltan a la vista:

Por nuestra parte seguiremos dando luz sobre esta forma de extensi√≥n de Qt‚Ķ ¬ŅCu√°l ser√° el siguiente?