qtjambi
TRANSCRIPT
2
Tabla de Contenidos
Que es QtJambi?
Acerca de Qt...
Características generales de Qt
Arquitectura de Qt
Características de Qt 4.4
Características de QtJambi
Ejemplos
3
Tabla de Contenidos
Comparación con otros frameworks Java
Herramientas de desarrollo de Qt
Descripción del taller a desarrollar
4
Que es QtJambi?
Un framework de desarrollo en Java con base las
librerías Qt C++ multiplataforma.
Incluye un API muy intuitivo en Java que provee las
mismas funcionalidades del API de C++.
Librerías muy completas para desarrollo de
aplicaciones cliente o servidor.
5
Que es QtJambi?
Se pueden mezclar componentes hechos en Java y C+
+ en un solo proyecto, con los siguienes beneficios:
Aumento de la eficiencia de desarollo.
Libertad y flexibilidad.
Aseguramiento de un framework ya probado.
6
Qt
Hablemos de Qt primero...
7
Acerca de Qt...
Desarrollada por la empresa Trolltech
http://www.trolltech.com
Qt es la base de KDE y miles de aplicaciones libres.
Miles de desarrolladores en todo el mundo.
Qt corre en diferentes plataformas:
x86
PowerPC
PDA's
8
Características de Qt
API en C++ con una librería de clases muy
completa.
Multiplataforma:
Linux/X11 (UNIX en general)
MS Windows
Apple Mac OS X
Linux embebido
Windows CE
9
Características de Qt
Acerca de Qt (continuación)
Multiplataforma
Encapsulamiento de las aplicaciones del s.o.
API idéntico en todas las plataformas
“Write once, compile everywhere”
Ejecutables natívos en cada plataforma
Unix o Linux
Qt/X11 lib
Aplicación
MS Windows
Qt/Windows lib
Aplicación
MacOS
Qt/Mac lib
Aplicación
10
Características de Qt
Conjunto de herramientas que simplifican el
desarrollo:
Diseñador de interfaces gráficas: Qt Designer.
Herramienta de internacionalización de aplicaciones:
Qt Linguist.
Sistema de compilación multiplataforma: qmake.
Herramienta para generación de documentación: Qt
Assistant.
Plugin para Eclipse.
11
Arquitectura de Qt
12
Características de Qt 4.4
Integración con WebKit, el motor HTML Open
Source.
Desarrollado por Apple con base KHTML del proyecto
KDE.
Ahora mantenido por Apple, KDE y Nokia/Trolltech.
Permite mezclar contenido y funcionalidades nativas
y web para crear interfaces innovativas
13
Caracterìsticas de Qt 4.4
Desarrollo de aplicaciones multimedia
multiplataforma:
Incluye soporte de Phonon, el framework multimedia
de KDE 4.
Abstrae formatos y frameworks multimedia de las
aplicaciones.
Soporte de Xquery para manejo de XML.
Desarrollo de aplicaciones concurrentes para
arquitecturas multicore con QtConcurrent.
14
Caracterìsticas de Qt 4.4
Poderoso canvas 2D:
15
Características de Qt 4.4
Integración muy sólida con OpenGL:
16
Características de Qt 4.4
Soporte de Xquery para manejo de XML.
Desarrollo de aplicaciones concurrentes para
arquitecturas multicore con QtConcurrent.
Presentación de las interfaces rápida y fácilmente
con CSS.
17
QtJambi
Ahora si, enfoquémonos en QtJambi
18
Características de QtJambi
El API de QtJambi provee toda la funcionalidad de
Qt C++.
Código mucho más simple que otros frameworks
como SWT/Swing
Requiere de un JRE y JNI para correr.
Manejo de memoria automática (es Java, duh !!)
19
Características de QtJambi
Uso de Qt Designer para el diseño de las interfaces
gráficas (nada de esos complicados layouts de
Swing).
Manejo de layouts muy simple.
Integración con Eclipse.
Utiliza JDBC para la conexión a bases de datos.
20
Características de QtJambi
Se puede mezclar con AWT/Swing.
Utiliza Apache ant para la compilación de los
proyectos.
21
Características de QtJambi
Generador de QtJambi:
Es la fundación de QtJambi.
Herramienta que permite mapear clases C++ a Java.
El código generado llama interamente a la clase
correspondiente C++.
22
Un ejemplo: Hola mundo !!
package com.trolltech.examples.tutorial;
import com.trolltech.qt.gui.*;
public class HelloWorld
{
public static void main(String args[])
{
QApplication.initialize(args);
QPushButton hello = new QpushButton("Hola Mundo!");
hello.resize(120, 40);
hello.setWindowTitle("Hola Mundo");
hello.show();
QApplication.exec();
}
}
23
Comunicación entre objetos
Comunicación entre objetos, “Señales y slots”
Objetos emiten señales cuando un evento ocurre
Señales se “conectan” a los slots de otros objetos
Los slots son métodos públicos comunes y corrientes
Mecanísmo completamente OO
24
Comunicación entre objetos
25
Otro Ejemplo: Señales y slots
public class Quit
{
public static void main(String args[])
{
QApplication.initialize(args);
QPushButton quit = new QPushButton("Quit");
quit.resize(80, 40);
quit.setFont(new QFont("Times", 18, QFont.Weight.Bold.value()));
quit.clicked.connect(QApplication.instance(), "quit()");
quit.setWindowTitle("Calling It Quits");
quit.show();
QApplication.exec();
}
}
26
Comparación entre Swing y QtJambi
Manejo de eventos en Swing: button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
showDialog(); // code to execute when button is pressed
}
});
Manejo de eventos en QtJambi:
button.clicked.connect(this, "showDialog()");
27
Comparación 2 entre Swing y QtJambi
Pintar un rectángulo en
Swing: void doPrinting() {
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setPrintable(this);
if (printJob.printDialog()) {
try {
printJob.print();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
public int print(Graphics graphics, PageFormat pageFormat, int
pageIndex) throws PrinterException{
if (pageIndex != 0) {
return Printable.NO_SUCH_PAGE;
}
Graphics2D graphics2D = (Graphics2D)graphics;
Rectangle2D.Double rectangle = new Rectangle2D.Double();
rectangle.setRect(pageFormat.getImageableX() + 1,
pageFormat.getImageableY() + 1, 144, 144);
graphics2D.draw (rectangle);
return Printable.PAGE_EXISTS;
}
Pintar un rectángulo en
QtJambi: void doPrinting () {
QPrinter printer = new QPrinter();
QPainter painter = new QPainter();
QPrintDialog printDialog = new QPrintDialog(printer, this);
if (printDialog.exec()) {
painter.begin(printer);
Graphics2D graphics2D = (Graphics2D) graphics;
Rectangle2D.Double rectangle = new Rectangle2D.Double();
rectangle.setRect(pageFormat.getImageableX() + 1,
pageFormat.getImageableY() + 1, 144, 144);
graphics2D.draw (rectangle);
painter.end();
}
}
28
Comparación 2 entre Swing y QtJambi
24 lineas de código 14 lineas de código.
41,6% menos código.
29
Qt Designer
Herramienta de desarrollo visual tipo WYSIWYG.
Drag and drop de los widgets deseados al dialogo
que se esté diseñando.
Conexión de señales y slots con drag and drop.
Las formas se pueden previsualizar sin necesidad
de compilarlas.
30
Qt Designer
Las formas se pueden previsualizar sin necesidad
de compilarlas.
Los widgets se pueden extender con propios.
Las interfaces generadas no son dependientes del
lenguaje (C++ o Java), son archivos XML (de
extensión .jui) que describen la interfaz.
31
Qt Designer
32
Qt Designer
Para convertir los archivos .ui en código Java se usa
la herramienta juic.
Pero no es necesario correrla manualmente, el
plugin de Eclipse lo hace por nosotros.
33
Plugin para Eclipse
Plugin que integra QtJambi en Eclipse versión 3.2.x
en adelante.
Herramientas como Qt Designer Qt Script Assistan y
scripts de Ant también son integrados.
34
Plugin para Eclipse
35
El Taller
Ahora lo bacano, el taller !!
36
El Taller
● El taller consiste de tres partes:
1)Instalar de Eclipse y QtJambi.
2)Instalar el plugin para Eclipse
3)Desarrollo de una mini aplicación.
37
Instalar Eclipse y QtJambi
1)Descomprimir el archivo:
eclipsejavaeuropawinterlinuxgtk.tar.gz
2)Descomprimir el archivo:
qtjambilinux32gpl4.4.0_01.tar.gz
38
Instalar el plugin
1)Descomplimir el archivo dentro de la carpeta eclipse:
qtjambieclipseintegrationlinux324.4.0_01.tar.gz.
2)Ejecutar Eclipse con el parámetro clean:
./eclipse clean
3)Ir al Window>Preferences>QtJambi Preference
Page
4)Colocar la ruta a QtJambi.
5)Reiniciar Eclipse.
39
Instalar el plugin
40
El taller
Como crear un nuevo proyecto:
1)Seleccionar File>New>Project
2)Abrir Qt Jambi y seleccionar “Qt Jambi Project (Using
Designer Form)“
3)Colocarle un nombre al proyecto.
4)Presionar Next 2 veces.
5)Ingresar un nombre de paquete y un nombre para la
clase principal.
6)Presionar Finish.
41
Desarrollo de la aplicación
Vamos a desarrollar reproductor de música que:
Use phonon para reproducir los archivos de audio.
Use WebKit para abrir la página del artista en
Wikipedia.
Tenga una barra de menú con entradas como
Archivo, Reproducción, Ayuda, etc..
42
Bibliografía
http://doc.trolltech.com
http://trolltech.com/products/qt/features/languagesupport/java
http://doc.trolltech.com/qtjambi4.4/html/com/trolltech/qt/qtjambiindex.html
43
QtJambi
Gracias !!!