QT y WebAssembly, a la Web y más allá.
En esta segunda (y ultima?) parte, crearemos un proyecto en Qt, compilaremos y ejecutaremos en la web (servidor local) nuestra aplicación para WebAssembly.
Configurando nuestro Proyecto para WebAssembly
Abrimos nuestro proyecto en Qt Creator y en la parte izquierda del IDE, seleccionamos la opción Qt 5.15.2 WebAssembly y luego en botón "Configure Project".
![](https://i.imgur.com/LjKUMUf.png)
En la parte inferior aparecerá el kit de Qt 5.15.2 WebAssembly y el logo de WebAssembly, además de los perfiles de construcción.
![](https://i.imgur.com/IAcYyGQ.png)
Compilando nuestra aplicación
Una vista previa de la aplicación:
![](https://i.imgur.com/kAmAWtx.png)
En la parte inferior aparecerá el kit de Qt 5.15.2 WebAssembly y el logo de WebAssembly, además de los perfiles de construcción.
Construimos ó lanzamos nuestra aplicación, y listo, 🎉 🚀
Recuerda que la primera vez que se ejecute, tomará un tiempo mientras se genera el archivo wasm
![](https://i.imgur.com/rDFFiDI.png)
Qt y WebAssembly
En la carpeta de construcción de nuestro proyecto, además de los archivos de compilación habituales de un proyecto de Qt, veremos los siguientes archivos:
- qtloader.js
- qtlogo.svg
- myWasmQtProject.html (un archivo html para ejecutar nuestra aplicación en un servidor web.)
- myWasmQtProject.js
- myWasmQtProject.js_plugin_import.cpp
- myWasmQtProject.js_plugin_import.o
- myWasmQtProject.wasm (nuestra aplicación en formato WebAssembly 😄)
Qt en la Web!
nuestro proyecto ejecutandose en el navegador! 😄 🎉 🚀
![](https://i.imgur.com/FvLot3n.png)
Hello World Qt
![](https://i.imgur.com/MSYdmRl.png)
Consideraciones
Qt y WebAssembly son herramientas poderosas que nos permiten llevar las aplicaciones tradicionales y darle una vuelta de tuerca para desplegarlas en la web, sin apenas esfuerzo adicional por parte del desarrollador.
Sin embargo al ser una tecnologia "reciente", WebAssembly, aún tiene algunas limitaciones, como el almacenamiento, la concurrencia, acceso a las fuentes del sistema, y temas relacionados con QNetworkAccessManager.