[eside-ghost] Librerias Qt
Javier Sanz
jsceballos en gmail.com
Mie Mar 22 02:08:55 CET 2006
Hola.
QT está muy bien. De hecho KDE y mil programas más están hechos con QT. Para
hacer el proyecto de TP las mayores ventajas que le veo es su impecable
diseño de clases y de su orientación a objetos, y su sencillez de uso, que
junto con el QT Designer pueden hacer ahorrar mucho tiempo. Además es
multiplataforma con apariencia nativa (aunque los controles no son nativos,
solo lo parecen estéticamente), es GPL para proyectos GPL, tanto en Linux
como en Windows... y bueno podría seguir hablando de las maravillas de QT
bastante tiempo. Cuando yo miré todo esto, allá por la version 3.3, cuanto
más la investigaba más me gustaba, y la versión 4 debe tener mejoras muy
interesantes.
Toda la ayuda que necesiteis, eso si en inglés (sencillito), está en
doc.trolltech.com. Los tutoriales están muy bien, directos al grano y
cortos, de lectura 100% recomendada. Obligada diría yo si os decidís a
utilizar QT definitivamente.
El uso de la librería no tiene mucho misterio. Solo hay un par de cosas que
hay que saber antes de empezar.
La primera, cómo funciona la compilación: con QT no se programa en C++ ANSI,
sino que tiene unas extensiones a C++ propias, como pueden ser las signals &
slots. Para pasar a C++ puro compilable por gcc, mingw, Visual C o el
compilador que sea, se utiliza el moc, Meta-Object Compiler. Por otra parte,
las ventanas diseñadas con el QT Designer se guardan en archivos .ui que son
XML, y luego se convierten a C++ con el uic, User Interface Compiler.
En realidad esto lo digo porque viene bien saberlo, pero no porque haya que
hacerlo a mano. Lo que se hace en la práctica es ejecutar 'qmake',
normalmente sin argumentos, para que genere el Makefile que hará que al
hacer el 'make' (o nmake en el caso de Visual C) se ejecuten los
compiladores específicos de QT necesarios antes de ejecutar el de C++. Toda
la configuración del proyecto se almacena en el archivo .pro, que luego es
leído por qmake.
Resumiendo, los pasos que hay que son:
1. se baja QT :).
2. se diseñan las ventanas (con el QT designer o a mano) y se escribe
el codigo fuente.
3. se crea y configura el .pro.
4. se ejecuta qmake.
5. se ejecuta make.
Viene bastante bien utilizar un buen editor que permita llamar al qmake y al
make desde él mismo y que sepa extraer los números de línea de la salida del
gcc. Para linux ahora mismo se me ocurren Kate, Anjuta, SciTE, pero hay
miles. Así la sesión de desarrollo se compone normalmente solo del QT
Designer + el editor + el lector de documentación (QT Assistant o
navegador). Para Windows sé que la integración con Dev C++ es nula, y que
con Visual Studio es muy buena, aunque creo que con la versión GPL no se
incluye dicha integración (una barra de herramientas par VS...etc).
El código de QT queda muy sencillo, por ejemplo este código, sacado del 2º
tutorial, muestra una ventana con un solo botón en el medio que ponga Quit
en grande y negrita y que al pincharle se acabe la ejecución del programa:
QApplication app(argc, argv);
QWidget window;
window.resize(200, 120);
QPushButton quit("Quit", &window);
quit.setFont(QFont("Times", 18, QFont::Bold));
quit.setGeometry(10, 40, 180, 40);
QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));
window.show();
return app.exec();
El código es bastante, por no decir muy, fácil de comprender.
Respecto al sistema de señales y slots que comentabas, pues decir que se
trata de un modo más de bindear (relacionar) eventos (p.e. clicks) con
acciones. Es muy flexible, más que el de la VCL o el de Java, aunque tiene
algún inconveniente, como que permitía violar la encapsulación (aunque ahora
no recuerdo cómo). Básicamente consiste en que todos los objetos QT, es
decir los que heredan de QObject, pueden tener, además de secciones
"public:" y "private:", secciones "slots:" y "signals:", pudiéndose poner
también anteponer especificadores de visibilidad a estas secciones. Un slot
sólo se diferencia de un método normal en que puede ser asignado para que se
ejecute al lanzarse uno (o más) eventos. Una vez declarado el slot, se
utiliza el famoso método connect (o con el QT Designer) para decir qué
eventos (en QT llamados señales) de qué objetos ejecutan ese slot al
lanzarse.
Esto último está escrito un poco técnico para no iniciados en la
programación de ventanas, pero en la documentación de QT viene muy bien
explicado, con dibujos y diagramas, en la sección correspondiente dentro de
"Core features".
Bueno me estoy cansando de escribir ya, creo que no me dejo nada de lo
básico. Sin más animaros a utilizar esta sstupendissima librería.
Salu2!
El día 21/03/06, Bertol Belloso <bertol en gmail.com> escribió:
>
> Aupa gente!
> Andamos intentando utilizar las librerias Qt para gestionar las
> ventanas de un proyectillo; y antes de nada queremos saber cómo
> funciona un poco el Qt; en miles de manuales hemos encontrado el
> concepto de "Signaux y Slots" que debe de ser una de las ventajas de
> esta libreria; si alguien las a usado nos gustaria haber si nos podria
> explicar más o menos en que quiere decir esto de los "Signaux y Slots"
> y como se empieza a tirar un poco del QtDesigner.
>
> Con BCB sabemos que te genera los .h y los .cpp automaticamente, pero
> con el QtDesigner cómo va todo eso? Hemos conseguido convertir el .ui
> que genera el QtDesigner gracias a moc a un C++ estandar para poder
> compilarlo ...
>
> Bueno Mila esker, si alguien a usado alguna vez Qt ...
> _______________________________________________
> eside-ghost mailing list
> eside-ghost en deusto.es
> https://listas.deusto.es/mailman/listinfo/eside-ghost
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: https://listas.deusto.es/mailman/private/eside-ghost/attachments/20060322/77bed147/attachment-0001.htm
Más información sobre la lista de distribución eside-ghost