Qtjambi

campuspartycolombia 2,102 views 43 slides Mar 20, 2009
Slide 1
Slide 1 of 43
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43

About This Presentation

No description available for this slideshow.


Slide Content

Introducción a QtJambi

+ 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

© Comparación con otros frameworks Java

e Herramientas de desarrollo de Qt

© Descripción del taller a desarrollar

~

Que es QtJambi?

e Un framework de desarrollo en Java con base las
librerias Qt C++ multiplataforma.

o Incluye un API muy intuitivo en Java que provee las
mismas funcionalidades del API de C++.

e Librerías muy completas para desarrollo de

aplicaciones cliente o servidor.

~

Que es QtJambi?

e 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.

2 Aseguramiento de un framework ya probado.

Hablemos de Qt primero...

e Desarrollada por la empresa Trolltech

http://www.trolltech.com
o Qt es la base de KDE y miles de aplicaciones libres.
e Miles de desarrolladores en todo el mundo.

© Qt corre en diferentes plataformas:
> x86
> PowerPC

> PDA's

Ce à

Caracteristicas de Qt

e API en C++ con una libreria de clases muy
completa.
o Multiplataforma:
> Linux/X11 (UNIX en general)
> MS Windows
> Apple Mac OS X

> Linux embebido

>» Windows CE

~ $25 2 ie

Caracteristicas de Qt

e Acerca de Qt (continuación)

> Multiplataforma
> Encapsulamiento de las aplicaciones del s.o.
2 API idéntico en todas las plataformas
> “Write once, compile everywhere”

» Ejecutables nativos en cada plataforma

Aplicación Aplicación Aplicación

Unix o Linux MS Windows

e 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.

de

Arquitectura de Qt

Qt Application Development Tools

C++ Application Java” Application
Qt Designer:
cd GUI Forms Builder
4

Modular Qt Class Library

Qt Linguist
HAN Tooleat

Graphics View
2D Canvas _ Qt Assistant:
Documentation’
Help File Reader

maka:

Cross-Platform
Linux® 1X44 Windows CE Ben

=

7

Qt 4.4

x ?

“ Características de

e 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 ini; ~ ‘nnovativas
| |
|
|

me F om

Be

Qt 4.4

e” à. : ag ES
Caracteristicas de

>

e 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.

e Desarrollo de aplicaciones concurrentes para

à

” Garactéliaticas de Qt 4.4

» Poderoso canvas 2D:

Embedded Dialogs Demo,
800

Embedded Dialog

Layout Direction: | Left to Right 18

Select Font: [Lucida Grande

Style

T=

(Macintosh (Agua) — ra

Layout spacing: 4 —_

» Pe *

e” Fa Pr €
* Características de Qt 4.4

» Integración muy sólida con OpenGL:

ouais CIE Om
ya Ce

Ce à

Caracteristicas de Qt 4.4

® Soporte de Xquery para manejo de XML.

© Desarrollo de aplicaciones concurrentes para
arquitecturas multicore con QtConcurrent.

o Presentación de las interfaces rápida y fácilmente
con CSS.

Ahora si, enfoquémonos en QtJambi

o El API de QtJambi provee toda la funcionalidad de
Qt C++.

e 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 !!)

e Uso de Qt Designer para el diseño de las interfaces
gráficas (nada de esos complicados layouts de
Swing).

e Manejo de layouts muy simple.

| © Integración con Eclipse.

e Utiliza JDBC para la conexión a bases de datos.

~ PO Bae, 2

es A

a” à 3 ne 3
* Características de QtJambi

a.

+ Se puede mezclar con AWT/Swing.

Y © Utiliza Apache ant para la compilación de los

proyectos.

ons PP MN

~

Características de QtJambi

e 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++.

r- QtJambi Generator

Java AP| A Java Native Interface > C++ API

e ET

Un ejemplo: Hola mundo !!

package com.trolltech.examples.tutorial;
import com.trolltech.qt.gui.*; Hello World!
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();

à pa A

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

> Mecanismo completamente OO

# we! Sa

Comunicación entre objetos

connect Object, signal1, Object2, slot! )

Object | connectí Object, signal, Object2, slot2)

signal
signal2 Object

signal

Objects

signalt connect Object1, signal2, Object4, slot )

Object4

connect( Object3, signal1, Object4, slot3)

y Pas =

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();

Ga. sa"

Swing y QtJambi

2 Far

~

Comparacion entre

e Manejo de eventos en Swing:
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
showDialog(); // code to execute when button is pressed
}
»;

e Manejo de eventos en QtJambi:

button.clicked.connect(this, "showDialog()");

¿“Comparación 2 en

, QtJambi

Ba

t

e Pintar un rectängulo en

Swing:
ee.
E
:
'
RE See
ERRORS, DO
Sen.

CE à
re Swing y

e Pintar un rectángulo en

QtJambi:

veld doPrning 0
Printer printer = now Printer:
Painter pater = now OPanter)
OPrtDilog palo = now QPAntDiogjrne, th}
1 (péDalog exec) |
aint beginnen)
(Graphics graphks2D = (Graphies2D) graphs
‘Rectangle20 Double rectang = new Rectangle2D. Double)
rectangle seRetipageFormatgetimageablex) +1,

pagoFermat getimagoabley) +1, 144,144)

aphies20 daw (ctange)
pate endi

D

= E de ¿Pi de .
“Comparación 2 entre Swing y
, QtJambi

e 24 lineas de código © 14 lineas de código.

© 41,6% menos código.

e Herramienta de desarrollo visual tipo WYSIWYG.

e Drag and drop de los widgets deseados al dialogo

que se esté diseñando.

e Conexión de señales y slots con drag and drop.

e Las formas se pueden previsualizar sin necesidad

de compilarlas.

e Las formas se pueden previsualizar sin necesidad

de compilarlas.
° Los widgets se pueden extender con propios.

e Las interfaces generadas no son dependientes del

lenguaje (C++ o Java), son archivos XML (de

extensión .jui) que describen la interfaz.

y

PRE

‘ Qt Designer

Qt Designer

le Edit Form Tools Window Help

RDOSBmO
MENE:

D date edit

RR) DaterTime edit

@ oi

Horizontal cra Bar

Pvertca sero ear

fh Horizon sider
verical slider

play Widget

© Label

ÜD text Browser

Hh. Graphics View

[Fe calendar

(32) Leo Number

aaa Progress Ba

3 Horizontal ine
Vertical Line

hur Wages (venal

8 thdeformrendererex
a XFormRendererEx
[A cratientedtor
a GradientRendererEx
@ rernstroterendererte
HE compositionñenderer

ES

Signal/Slot Editor

Object Inspector

| ButtonBox
» | puttondox

Signal Receiver

Object

=

accepted!) Dialog

rejected) Dialog res]
|

= Dialog
butrongox

~ QDialog
QDialogButt.

tab
verticalScrollbar

Widget
QScroliBar

Dialog = untitled"

taba |mb2

Boe

| [Abbrechen

Props
Property
JjectName tabwidget |
dcuodairy —— [QtNonModal |
fabled true |
hometry (30, 20,341, 2101 |
fePolcy (Expanding. Expa...|
Inimumsize (0,01 |
(16777215, 1677...
10.01
10.0)

brimumsize
feincrement
Isesize
Nette
ht Ra _ (Sans Serif, 91

Jrsor IR Arrow

Resource Editor

Current Resource: [<no resource files> E

ES
e) |

IS
false
‘Qu=TabFocus
Qt-DefaultContex
false

mouseTracking
TocusPolicy
contextMenuPblicy
accept rops.
too!Tip

e Para convertir los archivos .ui en código Java se usa

la herramienta juic.

e Pero no es necesario correrla manualmente, el

plugin de Eclipse lo hace por nosotros.

e 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.

Ld »
eclipse

[32 a
- Plugin para Eclipse

y

Refector Huigate Search Erojet Run QlDesigner dow Ep
g- S- $-6- %+-0-:Q-:99 ¡(5- ES [ER cios SP save
EE
de “Oo SOP cece object Inspector 3
es Ven Base) | Designer Ester beet Ces
Wet = 3 Norklerhopéss Dido
SR tee widget tattnBox |GOidoguionsox

ales Pr
tebe vont

Containers. Random colors | A
= Eee
LE] cup sox reto 2 — oran
Bi rex ouine BV CHP. 3 Make Toa
ewes Pose ES
BD stor ene
Dreams objectName —_Nextlerapciass

Drs : vds Geier
D dock wiege enabled true
geometry (0, 0, 343, 300]
sizePolicy (Preferred, erred, 0, 0]
nmin (0,0)
mamas (6777215 6777215)
Properties | cons 1? qe C++ Salt tor 23 cine 10,01
Tent et a ln — = basasos we)
salt

= fork Fa (hsshatolg2, 6)
Deus Sn Box

= [aon
E) teat

mousradine fe
parra focwPoley Qatar
ED ostvtim cat enormer, ibefadkcontethm
_ o

Natoal iors
Fork Combo Box . .

tne cde

w” =

EI 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.

In

Jambi

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

1)Descomplimir el archivo dentro de la carpeta eclipse:
qtjambi-eclipse-integration-linux32-4.4.0_01.tar.gz.
2)Ejecutar Eclipse con el parametro -clean:
./eclipse -clean
3)Ir al Window->Preferences->QtJambi Preference
Page

4)Colocar la ruta a QtJambi.

\ 5)Reiniciar Eclipse.

Preferences

type filter text Qt Jambi Preference Page

b General

P Ant
Cache

Jambi Location
‚homejjuanchofgtjambirgtjembi-linux32-gpl-4.4.

> Help
> InstallUpdate
>
>

Java
Mylyn
> Run/Debug

ea Juic options
Place generated files in separate folder:

FF Generated JUIC files

Validation
b Web and XML

Custom prefix for generated classes:

r

Restore Defaults Apply.

© 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.

=

- Desarrollo de la aplicación

e 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..

Pr

ibliografia

Gracias !!!