Programacin en QT Mdulo 1.
Introduccin
Mejor Framework de desarrollo multiplataforma de todos los tiempos Enfoque desde C++ 1991. Creacin de Framework para C++ Permite desarrollar GUI para distintas plataformas
Introduccin 1995 1998 se realiza KDE con dicho
Framework Desarrolladores KDE y Trolltech reunion para asegurar QT libre 2000-2005 Liberacin bajo licencia GPL de versiones QT para Windows, Linux y Macintosh 2008 Nokia adquiere QT
Introduccin QT incorpora un estilo de programacin c++
Menos vulnerable a fallos de programacin (sobre todo en manejo de memoria) Agradable de cara al desarrollador. Crece da a da. Ayuda de QT en su asistente (QT Assistant).
Instalacin
QT es un Framework completo multiplataforma
Instalacin en Windows: Bajar SDK de Internet [[Link] Complete Development Enviroment (Incluye SDk, QT Creator, ejemplos, documentacin, gcc, g++, make..) Ejecutar
Compilacin
Abrir QT Creator, se abrir IDE con la siguiente
ventana:
Compilacin
Podemos crear un nuevo proyecto (Create Project) Abrir un proyecto existente (Open project) Si vamos a la pestaa Develop podremos ver sesiones recientes que hemos abierto y acceder a ellas directamente.
Compilacin
Al abrir un proyecto vemos la disposicion de
QTCreator:
Compilacin
Barra de Herramientas de la Izquierda: (Superior) Welcome Bienvenida. Edit editor, que es su forma habitual para introducir cdigo. Design acceso a QTDesigner, para crear GUI. editando ficheros de tipo *.ui. Debug para hacer debug de un ejecutable. Projects permite configurar opciones del proyecto. Help accede al asistente.
Compilacin
Barra de Herramientas de la Izquierda: (Inferior) Ordenador: -- SuperiorNombre del proyecto actual. -- Inferior modo (debug o Release). Run ejecutar. Start Debug comenzar debug. Build All construirlo todo.
10
Compilacin
rbol lgico de ficheros que componen el proyecto:
Listado de ficheros abiertos:
11
Compilacin
Parte derecha superior, cdigo de los ficheros
12
Compilacin
Parte derecha inferior, mensajes del compilador, debugger, etc
13
Compilacin
Configuracin de entorno: Toolsoptions: en PROJECTS fijaremos el directorio para nuestros proyectos
14
Compilacin
Configuracin de entorno: Toolsoptions: en DESIGNER marcaremos la opcin Aggregation as a pointer member
15
Compilacin
Pulsamos RUN. Se compilar el proyecto actual y se ejecutar una vez compilado. Si en la barra de la izquierda sobre la zona inferior, aparece una barra en rojo con un nmero (el de errores), esto nos indicara que hay errores en la compilacin o en el linkado.
16
Compilacin
Vemos los errores en la parte derecha inferior:
17
Estructura de una aplicacin QT4
Qt posee una forma de ordenar el cdigo que desde el principio es fundamental conocerlo, para desarrollar cdigo sencillo y legible desde el primer momento. No importa lo sencillo o complejo que sea el proyecto, si estructuramos bien el cdigo, se podr mantener de una forma ms sencilla y eficaz.
18
Estructura de una aplicacin QT4
Todo proyecto con interfaz visual (GUI) en Qt, tiene los mismos elementos: Ficheros de formularios (forms). Ficheros cabecera (headers). Ficheros fuente (sources). Ficheros de proyecto (project). Es recomendable tener todos los ficheros del proyecto en un mismos directorio raz, cuyo nombre coincida con el nombre completo del proyecto.
19
Estructura de una aplicacin QT4
Ficheros de formularios (forms): Con la extensin *.ui, cada fichero describe en lenguaje el interfaz grfico de formularios o ventana de la aplicacin. Por tanto cada fichero *.ui es una ventana. Estos ficheros son diseados grficamente en el Qt Designer, el cual genera automticamente el cdigo XML de dichos ficheros.
20
Estructura de una aplicacin QT4
Ficheros de formularios (forms): No es necesario conocer la estructura exacta del mismo, de hecho, si en QtCreator, hacemos doble click sobre un fichero *ui, se abrir directamente el Qt Designer, de manera que se mostrar la interfaz grfica. Para ver el cdigo XML pasamos al modo Edit Siempre tendr la siguiente estructura: <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0> .. .. </ui>
21
Estructura de una aplicacin QT4
Ficheros de cabecera (headers): Con la extensin *.h . Lo mas recomendable es que la declaracin de cada clase vaya en un fichero cabecera por separado, y el nombre del fichero coincida con el el nombre de la clase que se declara. Ej: si desarrollamos la clase calculator, el fichero cabecera sera el calculator.h
22
Estructura de una aplicacin QT4
Ficheros cabecera (classname.h) #ifndef CLASSNAME_H #define CLASSNAME_H
#include <QClasePadre> //podemos declarar aqu otras clases del proyecto class ClaseIncluida; class Classname : public QClasePadre { //el constructor con un solo parametro lo declaramos siempre //como explicit, y al menos con el puntero a la clase padre //inicializado a NULL explicit Classname(QWidget *parent = 0);
23
Estructura de una aplicacin QT4
Ficheros Fuente (sourcers): Con la extensin *.cpp . Lo mas recomendable es que la declaracin de cada clase vaya en un fichero cabecera por separado, y el nombre del fichero coincida con el nombre de la clase que se declara. Ej: si desarrollamos la clase calculator, el fichero cabecera sera el calculator.h
24
Estructura de una aplicacin QT4
Ficheros Fuente ([Link]): #include classname.h" Classname:: Classname(QClasePadre *parent) : QClasePadre(parent) { //implementacin del constructor de la clase } //implementacin del resto de miembros de la clase classname .. ..
25
Estructura de una aplicacin QT4
Ficheros Fuente Principal ([Link]): Primeramente inclumos el mdulo necesario para el cdigo que vamos a incluir en la funcin main(). Lo ms lgico es que vaya incluida la clase interfaz, que crea la ventana principal. Dicha ventana podr ser un Widget (Qwidget), una ventana de dilogo (Qdialog) o una ventana principal (QMainWindow). Primeramente creamos una instancia a Qapplication que puede recibir argumentos de la linea de comandos. Luego instanciamos la clase interfaz, mostramos dicha interfaz, y finalmente con Qapplication::exec entramos en el bucle de eventos para iteractuar con la interfaz.
26
Estructura de una aplicacin QT4
Ficheros Fuente Principal ([Link]): #include <Qmodulo> #include claseinterfaz.h int main(int argc, char **arg) { QApplication a(argc,argv); claseinterfaz W; [Link](); //cdigo necesario return [Link]();
27
Hola Mundo en QT
Fichero principal ([Link]): #include <QtGui> #include <QLabel> int main(int argc, char **arg) { QApplication app(argc,argv); Qlabel hola(Hola mundo!!); [Link](); } return [Link]();
28