qtjambi

Post on 24-May-2015

4.210 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Juan Luis Baptistejbaptiste@merlinux.org

Campus Party Colombia2008

Introducción a QtJambi

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:

eclipse­java­europa­winter­linux­gtk.tar.gz

2)Descomprimir el archivo:

qtjambi­linux32­gpl­4.4.0_01.tar.gz

38

Instalar el plugin

1)Descomplimir el archivo dentro de la carpeta eclipse:

qtjambi­eclipse­integration­linux32­4.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/language­support/java

http://doc.trolltech.com/qtjambi­4.4/html/com/trolltech/qt/qtjambi­index.html

43

QtJambi

Gracias !!!

top related