Bienvenidos sean a este post, hoy hablaremos un poco sobre Qt.
En el post anterior mencionamos como trabajar con la GUI y para ello debiamos usar la API de cada S.O. Lo cual nos llevaba a que debiamos crear una aplicacion para cada S.O para que pueda manejar su correspondiente API. Y tambien hablamos de como trabaja Java con su JVM para poder tener una mejor portabilidad con un solo codigo para cada S.O.
Sin embargo, en el post anterior tambien mencionamos que existe una posibilidad de hacer lo mismo para la GUI y ahi es cuando entra en escena, Qt. Este es un popular widget que nos permite crear aplicacioness GUI pero con la particularidad de que nos permite hacerla multi-plataformas porque puede correr en varios de ellos, o por lo menos en los mas populares. Veamos cuales son algunos de los modulos mas populares:
- QtCore: Clases nucleo
- Qt GUI: Clases base para componentes de GUI
- Qt Widgets: Clases para extender a Qt GUI con widgets de C++
- Qt Multimedia: Clases para audio, video, radio y funcionalidad de la camara
- Qt Network: Clases para la utilizacion de la red
- Qt Modelling Language (QML): Una framework declarativa para construir aplicaciones con interfaces de usuario personalizadas
- Qt SQL: Clases para integracion de bases de datos usando SQL
- Qt Quick family of modules: Una lista de modulos relacionadas a QML
- Qt Test: Clases para testeo de unidades de aplicaciones Qt
Cualquiera de estos modulos para ser usados en el programa se deben agregar al compilador un archivo de proyecto (project file) que sera identificado con la extension .pro. En este archivo almacenaremos todo lo necesario para que qmake pueda crear a la aplicacion. qmake es una herramienta pensada principalmente para simplificar el proceso de creacion. Como mencionamos en el archivo .pro describiremos todos los componentes del proyecto, tales como los codigo fuente, modulos Qt, librerias, etc. Vamos a suponer que tenemos un proyecto que usa a Qt Widgets y Qt Network y a su vez tendremos a main.cpp para la aplicacion y test.cpp para los testing. El archivo .pro tendra los siguientes datos:
QT += widgets
QT += network
SOURCES += test.cpp
SOURCES += main.cpp
Como pueden ver, es bastante intuitivo donde primero tenemos los modulos de Qt y luego pasamos los codigos fuentes de nuestro proyecto. Una particularidad que podemos agregar es seleccionar codigos fuente para una plataforma especifica:
QT += widgets
QT += network
SOURCES += test.cpp
SOURCES += main.cpp
win32 {
SOURCES += para_windows.cpp
}
unix {
SOURCES += mundo_linux.cpp
}
Cuando se crea la aplicacion en un entorno de Windows, el archivo para_windows.cpp formara parte de este. Por lo contrario, cuando trrabajemos en un entorno de Unix se tomara al archivo mundo_linux.cpp como parte de este proceso. Como podran darse cuenta, cada archivo sera ignorado cuando no este en el entorno que le asignamos.
Hablemos sobre el modelo de compilacion de las aplicaciones de Qt. El punto fuerte de Qt son la poderosas habilidades para brindar programacion multi-plataforma mediante metacompilacion de los codigos fuentes. Es decir, antes de ser utilizado el compilador de C++, el compilador de Qt limpia y reemplazaa por los componentes para el S.O especificado. Por ejemplo, cuando usamos un componente de boton (QPushButton) y este es compilado en un entorno de Windows sera reemplazado por un boton de componente especifico de Windows. Por esto, en nuestro archivo .pro podemos tener modificaciones de plataformas especificas para nuestro proyecto.
Lo primero es nuestro codigo fuente de Qt, y este lo pasaremos al metacompilador. El metacompilador es tambien denominado como MOC (Meta-Object Compiller), y este devolvera un codigo fuente que sera especifico para cada plataforma. Por lo tanto, a partir de este paso se pasara al compilador de C++, este utilizara el API correspondiente y generara un ejecutable que podra ser utilizado en el S.O. Ok, es verdad que tendremos un ejecutable para cada S.O pero todos seran del mismo codigo fuente. Esto nos ahorra tener que crear un codigo para cada S.O para poder utilizar cada API. Esto hace que se aplique el refran de Qt:
«Haz un solo codigo, y compilalo en cualquier parte».
En resumen, hoy hemos visto una introduccion a Qt, sus beneficios con respecto a trabajar directamente con las API de cada S.O, tambien vimos como trabajar con sus archivos y como trabaja. Espero les haya resultado de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
