Está en la página 1de 18

Contenidos

C++
qmake
Qt
Otras Herramientas

Introducción al Desarrollo de Aplicaciones con
C++ y Qt4

Gastón Jorquera
gjorquera [at] gmail [dot] com

Universidad de Chile
Facultad de Ciencias Fı́sicas y Matemáticas

Viernes 13 de Marzo de 2009

Gastón Jorquera gjorquera [at] gmail [dot] com Introducción al Desarrollo de Aplicaciones con C++ y Qt4

Contenidos C++ qmake Qt Otras Herramientas Contenidos C++ Clases Qt Punteros Qt Referencias Conceptos Iniciales Otras Caracterı́sticas Designer qmake Estructura de Archivos qmake Otras Herramientas Proyectos Simples Proyectos Complejos Gastón Jorquera gjorquera [at] gmail [dot] com Introducción al Desarrollo de Aplicaciones con C++ y Qt4 .

d o u b l e norma ( ) . int y ). Contenidos Clases C++ Punteros qmake Referencias Qt Otras Caracterı́sticas Otras Herramientas Definiciones de Clases #i f n d e f POINT2I H #d e f i n e POINT2I H #i n c l u d e ” point2i . 0 ∗ ( m x − f i n −>m x ) . h” class Point2I { Point2I : : Point2I () public : : m x (0) . i n t m x = 0 . } // D i s t a n c i a e u c l i d i a n a e n t r e int x () { return m y . } #e n d i f // POINT2I H Gastón Jorquera gjorquera [at] gmail [dot] com Introducción al Desarrollo de Aplicaciones con C++ y Qt4 . // G e t t e r s y s e t t e r s . } // ! D i s t a n c i a e u c l i d i a n a . Point2I : : Point2I ( int x . // <− o j o e l ” . ” . r e t u r n s q r t ( x∗x + y∗y ) . } // e l o r i g e n y e s t e p u n t o . // <− NO COMPILA delete origen . int y) { // ! C o n s t r u c t o r con v a l o r e s . 0 ∗ ( m y − f i n −>m y ) . int y () { return m x . // ! C a l c u l a l a norma d e l ” v e c t o r ” d o u b l e y = 1 . } void setX ( i n t x ) { m x = x . Point2I ( int x . m x = x. int m y. r e t u r n norma . private : d o u b l e norma = d i s t a n c i a ( o r i g e n ) . } . d o u b l e x = 1 . double P o i n t 2 I : : d i s t a n c i a ( P o i n t 2 I ∗ f i n ) { f r i e n d double d i s t a n c i a ( P o i n t 2 I ∗ f i n ) . } Point2I (). m y (0) { // ! C o n s t r u c t o r p o r d e f e c t o . m y = y. } d o u b l e P o i n t 2 I : : norma ( ) { void setY ( i n t y ) { m y = y . } P o i n t 2 I ∗ o r i g e n = new P o i n t 2 I .

m y = T( ) . } } T y () { return m y . } delete origen . m y = y . d o u b l e norma = d i s t a n c i a ( o r i g e n ) . t e m p l a t e <typename T> // ! C a l c u l a l a norma d e l ” v e c t o r ” d o u b l e P o i n t 2<T>:: norma ( ) { d o u b l e norma ( ) . } } // ! D i s t a n c i a e u c l i d i a n a . 0 ∗ ( m x − f i n −>m x ) . } r e t u r n norma . 0 ∗ ( m y − f i n −>m y ) . T y ) { m x = x . v o i d s e t X (T x ) { m x = x . // G e t t e r s y s e t t e r s . f r i e n d d o u b l e d i s t a n c i a ( P o i n t 2<T> ∗ f i n ) . v o i d s e t Y (T y ) { m y = y . Gastón Jorquera gjorquera [at] gmail [dot] com Introducción al Desarrollo de Aplicaciones con C++ y Qt4 . P o i n t 2<T> ∗ o r i g e n = new P o i n t 2<T>. }. Contenidos Clases C++ Punteros qmake Referencias Qt Otras Caracterı́sticas Otras Herramientas Templates #i f n d e f POINT2 H #d e f i n e POINT2 H t e m p l a t e <typename T> t e m p l a t e <typename T> c l a s s Point2 d o u b l e P o i n t 2<T>:: d i s t a n c i a ( P o i n t 2<T> ∗ f i n ) { { d o u b l e x = 1 . T x () { return m x . } r e t u r n s q r t ( x∗x + y∗y ) . public : d o u b l e y = 1 . T m y. P o i n t 2 (T x . Point2 () { m x = T( ) . } private : #e n d i f // POINT2 H T m x.

Contenidos Clases C++ Punteros qmake Referencias Qt Otras Caracterı́sticas Otras Herramientas Interfaces #i f n d e f CIRCULO H #i f n d e f FIGURA H #d e f i n e CIRCULO H #d e f i n e FIGURA H #i n c l u d e ” point2i . double area () { // ! C a l c u l a e l a r e a . #d e f i n e PI 3 . 1 4 1 5 class Figura class Circulo : public Figura { { public : public : v i r t u a l Figura ( Point2I ∗centroide ) { Circulo ( Point2I ∗centroide . // ! C a l c u l a e l p e r i m e t r o . v i r t u a l ˜ Figura () { } delete m centroide . v i r t u a l double area () = 0. }. } protected : private : Point2I ∗m centroide . : Figura ( centroide ) { } m radio = radio . }. double perimetro () { } r e t u r n 2∗ PI ∗ m r a d i o . i n t m radio . #e n d i f // FIGURA H #e n d i f // CIRCULO H Gastón Jorquera gjorquera [at] gmail [dot] com Introducción al Desarrollo de Aplicaciones con C++ y Qt4 . r e t u r n PI∗ m r a d i o ∗ m r a d i o . } v i r t u a l double perimetro () = 0. h” class Point2I . int radio ) m centroide = centroide .

// Llama a A . } clase C void unico () { { // Hace o t r a c o s a . v o i d metodo ( ) { } A : : metodo ( ) . v o i d metodo ( ) { // I m p l e m e n t a c i o n d i s t i n t a a l a // de l a c l a s e A . u n i c o ( ) . }. class B } { }. } }. Gastón Jorquera gjorquera [at] gmail [dot] com Introducción al Desarrollo de Aplicaciones con C++ y Qt4 . B : : metodo ( ) . Contenidos Clases C++ Punteros qmake Referencias Qt Otras Caracterı́sticas Otras Herramientas Herencia Múltiple class A { v o i d metodo ( ) { // Hace a l g o .

∗k = 4 . int j = 2. 3 ) . // a h o r a j = 4 t a m b i e n Gastón Jorquera gjorquera [at] gmail [dot] com Introducción al Desarrollo de Aplicaciones con C++ y Qt4 . p3 = new P o i n t 2 I ( 1 . Point2I ∗p4 . d e l e t e p3 . // &j d e v u e l v e ” un p u n t e r o a ” j . d e l e t e p4 . Point2I ∗p3 . Contenidos Clases C++ Punteros qmake Referencias Qt Otras Caracterı́sticas Otras Herramientas Punteros Point2I p1 . i n t ∗k = &j . // <=> Point2D p1 ( ) . s e t X ( p3−>y ( ) ) . p4 = new P o i n t 2 I . p1 . Point2I p2 ( 1 . 3 ) .

0∗( m x − f i n . 0 ∗ ( m y − f i n −>m y ) . Point2I origen . } // Ahora puede s e r i m p l e m e n t a d o a s i : d o u b l e P o i n t 2 I : : norma ( ) { // D i s t a n c i a e u c l i d i a n a e n t r e // e l o r i g e n y e s t e p u n t o . double y = 1. } Gastón Jorquera gjorquera [at] gmail [dot] com Introducción al Desarrollo de Aplicaciones con C++ y Qt4 . Contenidos Clases C++ Punteros qmake Referencias Qt Otras Caracterı́sticas Otras Herramientas Referencias // En l a c l a s e P o i n t 2 // O r i g i n a l double P o i n t 2 I : : d i s t a n c i a ( P o i n t 2 I ∗ f i n ) { d o u b l e x = 1 . } // Nueva // E v i t a m o s p u n t e r o s n u l o s y c o p i a s ! double P o i n t 2 I : : d i s t a n c i a ( P o i n t 2 I &f i n ) { double x = 1. m x ) . r e t u r n d i s t a n c i a ( o r i g e n ) . // r e t u r n d i s t a n c i a ( P o i n t 2 I ( ) ) . r e t u r n s q r t ( x∗x + y∗y ) . d o u b l e y = 1 .0∗( m y − f i n . r e t u r n s q r t ( x∗x + y∗y ) . 0 ∗ ( m x − f i n −>m x ) . m y ) .

J u e v e s . I Operators t e m p l a t e <typename T> c l a s s Point2 { public : . 3 ) . } }. P o i n t 2<i n t > p u n t o . T &o p e r a t o r [ ] ( i n t i ) { return ( i > 0 ? m x : m y ).. Martes . 3 .. // G r a c i a s a que d e v u e l v e T& Gastón Jorquera gjorquera [at] gmail [dot] com Introducción al Desarrollo de Aplicaciones con C++ y Qt4 . V i e r n e s } . Dias d i a = Lunes . I Typedef t y p e d e f P o i n t 2<d o u b l e> Point2D . Contenidos Clases C++ Punteros qmake Referencias Qt Otras Caracterı́sticas Otras Herramientas Otras Caracterı́sticas I Enumerators enum D i a s { Lunes . p u n t o [ 1 ] = 3 4 . Point2D p u n t o ( 3 . 2 . M i e r c o l e s .

Contenidos C++ qmake qmake Proyectos Simples Qt Proyectos Complejos Otras Herramientas qmake I Simplifica el proceso de compilación para distintas plataformas. I Automatiza la generación de Makefiles. I Sirve para proyectos que usen o no Qt. I También llamados herramienta make-makefile o makemake. Gastón Jorquera gjorquera [at] gmail [dot] com Introducción al Desarrollo de Aplicaciones con C++ y Qt4 .

I ‘qmake‘ Genera los Makefiles. I Ejemplo.pro. I ‘make‘ Compila el programa. I ‘qmake −project‘ Genera el archivo . Gastón Jorquera gjorquera [at] gmail [dot] com Introducción al Desarrollo de Aplicaciones con C++ y Qt4 . Contenidos C++ qmake qmake Proyectos Simples Qt Proyectos Complejos Otras Herramientas Proyectos Simples I Escribir código.

Contenidos C++ qmake qmake Proyectos Simples Qt Proyectos Complejos Otras Herramientas Variables I TEMPLATE={app|lib} I CONFIG I TARGET I VERSION (Solo para TEMPLATE=lib) I TEMPLATE=subdirs I DESTDIR I SUBDIRS I HEADERS I SOURCES I FORMS I RESOURCES Gastón Jorquera gjorquera [at] gmail [dot] com Introducción al Desarrollo de Aplicaciones con C++ y Qt4 .

pro p o i n t 2 . p r o main . cpp point2 . pro s r c . cpp libs/ geometry / geometry . so src / app / app . h l i b s . pro Gastón Jorquera gjorquera [at] gmail [dot] com Introducción al Desarrollo de Aplicaciones con C++ y Qt4 . pro ejemplo . Contenidos C++ qmake qmake Proyectos Simples Qt Proyectos Complejos Otras Herramientas Librerias ejemplo / bin / app libGeometry .

5. I Widgets con el patrón MVC (Item y Container). I Sistema de ayuda (assistant). I Networking. I LGPL en su versión 4. I I18n (linguist). Gastón Jorquera gjorquera [at] gmail [dot] com Introducción al Desarrollo de Aplicaciones con C++ y Qt4 . Contenidos Qt C++ Conceptos Iniciales qmake Designer Qt Estructura de Archivos Otras Herramientas Qt I Librerı́a C++ gráfica multiplataforma. I XML. I Provee funcionalidades para: I Gráficos 2D y 3D. I Incluye las siguientes herramientas: I Creación rápida de Dialogs y MainWindows (designer). I IO I Acceso a bases de datos. I Multithreading. I Plugins.

I Sistema Signals/Slots. I QWidget memory management. I QLayout. I QDialog. I QMainApplication. Contenidos Qt C++ Conceptos Iniciales qmake Designer Qt Estructura de Archivos Otras Herramientas Conceptos Iniciales I QObject. Gastón Jorquera gjorquera [at] gmail [dot] com Introducción al Desarrollo de Aplicaciones con C++ y Qt4 . I QWidget.

Contenidos Qt C++ Conceptos Iniciales qmake Designer Qt Estructura de Archivos Otras Herramientas Designer I Drag & Drop de Widgets. Gastón Jorquera gjorquera [at] gmail [dot] com Introducción al Desarrollo de Aplicaciones con C++ y Qt4 .h I Define una clase: Ui :: NombreClase I Que implementa el método: setupUi(QWidget ∗parent). I Genera un encabezado: ui <nombre clase>.

pro cc52b . pro l i b s . cc52b . cc52bwidget . h cc52bmainwindow . pro Gastón Jorquera gjorquera [at] gmail [dot] com Introducción al Desarrollo de Aplicaciones con C++ y Qt4 . p r o cc52bmainwindow . pro s r c . cpp cc52bmainwindow . Contenidos Qt C++ Conceptos Iniciales qmake Designer Qt Estructura de Archivos Otras Herramientas Estructura de Archivos cc52b / bin / src / app / app . pro cc52bwidget / // E x t e n s i o n de QGLWidget p a r a que // f u n c i o n e b i e n con e s t a e s t r u c t u r a . u i main . cpp libs/ cc52b / // I m p l e m e n t a c i o n de f u n c i o n a l i d a d e s // en c l a s e s b i e n o r d e n a d a s .

Contenidos C++ qmake Qt Otras Herramientas Otras Herramientas I Git I QtCreator Gastón Jorquera gjorquera [at] gmail [dot] com Introducción al Desarrollo de Aplicaciones con C++ y Qt4 .