PARTE I
APLICACIÓN DE LA LIBRERÍA QT EN LA
ELABORACIÓN DE UN DIRECTORIO
TELEFÓNICO- Tema
La Universidad Tecnológica América, en función de su misión
"Formar profesionales competentes, con pensamiento emprendedor, de amplia cultura
científica, tecnológica y humanista, con
capacidad de liderazgo
y de crear sus propias empresas,
sobre la base de un modelo
educativo, caracterizado por procesos
de investigación, producción y servicios
que promuevan: inteligencia, creatividad, valores
éticos y humanos.", conduce a través de
elaboración y defensa de proyectos
integradores, para resolver problemas
científico-técnicos como vía de producir
las experiencias de aprendizaje
que garanticen las exigencias cognitivas que demandan
la ciencia
y la tecnología.Tomando en cuenta que en los actuales momentos la
tendencia de las grandes empresas
(NASA, IBM, XEROX) es el software con
interfaces gráficos; incursionaremos en la
librería Qt, con una aplicación
transaccional.El presente Proyecto,
engloba la síntesis y análisis de las fuentes de
investigaciones, comenzando primeramente
entendiendo que es Librería QT de Linux, para
el buen entendimiento y desarrollo
del tema.También, debemos agradecer a todos los
tutores de las asignaturas de este nivel, en especial a la
Ing. Rosita Paredes, por el apoyo incondicional que han
demostrado ante la Elaboración de los Proyectos
Integradores en todas las ciencias. - Antecedentes del Proyecto
- Problema a resolver.
- ¿Existen aplicaciones en nuestra universidad
de la Librería Qt?
Aplicar la librería Qt en elaboración
de un Directorio Telefónico
Al no conocer aplicaciones elaboradas por nuestra
Universidad con la Librería QT en modo grafico (Qt
Designer), realizaremos un directorio telefónico con
dicha librería, contendrá ventanas, botones, y
eventos del
Lenguaje
C++. Es decir será interactiva entre el usuario y el
computador.
Al no conocer el proceso de
elaboración de una aplicación, utilizando la
librería Qt, tenemos la necesidad de programarla;
pasando por un proceso de
investigación y aprendizaje
de nuevos conceptos, técnicas y habilidades.La mayoría de personas conocemos, que en la
actualidad, la Programación y la Computación en general, es una de las
ciencias
más importantes para el crecimiento de una empresa,
puesto que necesita renovar su tecnología para tener una mejor
perspectiva empresarial.En vista de que los estudiantes, no poseen
conocimientos referentes a la Librería Qt, observamos
la necesidad de brindar un estudio analítico del tema
antes mencionado, para poder
incrementar nuestro nivel intelectual y poder
socializar los mismos, por medio de la ponencia del Proyecto
Final y del resumen que entregaremos al final del
mismo.En lo que se refiere a lo personal,
esta investigación, se la está desarrollando,
por cuanto se encuentra estrechamente relacionada con nuestra
vida profesional, por cuanto en la actualidad, se utiliza
mucho la Programación orientada a objetos en
modo grafico, como es caso del Qt Designer.Teniendo en cuenta que la investigación, es
una de las fuentes
más trascendentales, para tener una mejor perspectiva
profesional, puesto que en todos los campos sin
excepción se la utiliza, por cuanto hay que
actualizarse con la nueva tecnología que emana del
estudio y análisis de las necesidades que se
presentan.- Justificación
Emplear la Librería QT, por medio del
estudio analítico, en un modelo
pedagógico, de fácil entendimiento;
fortaleciendo nuestras bases metodológicas,
conceptuales y destrezas en la programación orientada a
objetos.- Objetivo General
- Objetivos
Específicos
- Objetivos planteados
- Fortalecer la capacidad investigativa, indagando
los conceptos básicos de la librería Qt, para
poder utilizar botones, clases y demás eventos. - Programar en Lenguaje C++,
empleando la librería Qt, en una aplicación
(Directorio Telefónico), de fácil entendimiento
para la respectiva socialización. - Socializar nuestra investigación con los
compañeros de Nivel, por medio de la ponencia del
Proyecto Final y del resumen entregado a cada uno, y de esta
manera tener conocimientos homogéneos.
- Alcance
Con el presente trabajo, nos comprometemos a investigar
y conocer de manera práctica la aplicabilidad que tiene la
Librería QT en la creación de un Directorio
Telefónico.
Entre los temas estudiados serán:
- Creación de interfaces gráficas, se realizará de QT
Designer v. 3.1.1. - Lenguaje de programación es C++.
- Sistema operativo a utilizarse es Linux v.
9.0.
El directorio telefónico tendrá las
siguientes directrices:
- Contendrá una ventana principal.
- Se deberá ingresar datos como
nombre, apellidos, dirección, número
telefónico, entre otros. - Una vez ingresado los datos se debe
ordenar e imprimir en pantalla.
- Metodología
Los métodos
investigamos que hemos utilizado se detallan a
continuación:
- Método deductivo, puesto que ejecutamos
programas,
previamente elaborados, para poder fijarnos en el proceso de
elaboración y luego creamos nuevos programas, para
poder compararlos y poder definir las falencias de los
mismos. - Método analítico y crítico,
puesto que analizamos y sintetizamos las fuentes
bibliograficas, para poder sacar un extracto y poder adquirir
conocimientos, con el objetivo de
aplicarlos en un Directorio Telefónico.
PARTE II
Librería QT
Qt es un producto de
la empresa
noruega de software Trolltech AS, esta
empresa se
dedica a desarrollar librerías y herramientas
de desarrollo de
software, además es experta en servicios de
consultoría. Qt son un conjunto de
librerías multi-plataforma para el desarrollo del
esqueleto de aplicaciones GUI, escritas en código
C++. Qt además esta completamente orientado a
objetos.
Qt comenzó a distribuirse comercialmente en 1996
y desde entonces ha sido la base para numerosas aplicaciones
incluyendo la popular interfaz gráfica para Linux llamada
KDE, disponible en todas las grandes distribuciones de
Linux.
En el mercado se pueden
encontrar las siguientes distribuciones de Qt:
- Qt Enterprise Edition y Qt Profesional
Edition, disponibles para el desarrollo de software con
fines comerciales. Incluye servicio de
soporte técnico y están disponibles
ampliaciones. - Qt Free Edition Es la versión para
Unix/X11
para el desarrollo de software gratuito y de código abierto. Se puede obtener gratis
sujeto a los términos de la Q Public License and the GNU
General Public License. Para plataformas Windows
también esta disponible la versión Qt non
comercial. - Qt Educational Edition es una versión
de la Qt Profesional Edition con licencia únicamente
para fines educacionales. - Qt/Embedded Free Edition.
Características:
- QT es una librería para la creación de
interfaces gráficos. Se distribuye bajo una licencia
libre GPL (o QPL) que nos permite incorporar las QT en nuestras
aplicaciones open-source - Se encuentra disponible para una gran número
de plataformas: Linux, MacOs X, Solaris, HP-UX, UNIX con X11.
Además, existe también una versión para
sistemas
empotrados - Es orientado a objetos, lo que facilita el desarrollo
de software. El lenguaje
para el que se encuentra disponible es C++ aunque han aparecido
bindings a otros lenguajes como Python o Perl - Es una librería que se basa en los conceptos
de widgets (objetos), Señales-Slots y Eventos (ej: clic
del ratón). - Las señales y los slots es el mecanismo para
que unos widgets se comuniquen con otros. - Los widgets pueden contener cualquier número
de hijos. El widget "top-level" puede ser cualquiera, sea
ventana, botón, etc. - Algunos atributos como el texto de
etiquetas, etc. … se modifican de modo similar al lenguaje
html - QT proporciona además otras
funcionalidades:
Qt Designer
Es una herramienta muy potente que permite
diseñar de una forma muy sencilla y rápida ventanas
de dialogo con las
librerías Qt. Esta herramienta es una aplicación
mediante la cual se puede realizar el diseño
de aplicaciones GUI de forma gráfica y muy
intuitiva.
Características:
- Para crear una interfaz con QT Designer basta con
seleccionar el menú Archivo ->
Nuevo… y allí se elige un fichero de QT
Designer (*.ui)
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
- Las plantillas que se puede escoger son:
- Dialog: Es la plantilla más simple, crea
una ventana que incluye únicamente los botones de
minimizar, maximizar y cerrar. De esta derivan el resto de
plantillas. - Wizard: Permite realizar aplicaciones paginadas,
además de esto incluye los botones de cancelar,
anterior (back), siguiente (next) o finalizar
(finish). - Dialog with buttons: Igualmente deriva de la
primera e incluye lo botones de ayuda ,apply ,ok y
cancel.
- Dialog: Es la plantilla más simple, crea
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
- Disponemos de una paleta de widgets muy completa, que
incluyen los widgets más comunes de las liberías
QT. Si además hemos instalado las librerías para
el desarrollo de aplicaciones KDE, tendremos widwets
adicionales.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
- El funcionamiento es de estilo Selecciona y
dibuja, es decir, basta con seleccionar un tipo de widget
en la paleta y luego al ponernos sobre el formulario se dibuja
con la geometría que queramos. - Las propiedades de un widget cualquiera se pueden
cambiar fácilmente en tiempo de
diseño con el panel de
propiedades.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
- A medida que guardamos los cambios de la interfaz, si
editamos el fichero .ui vemos que va cambiando el contenido. La
descripción de la interfaz se guarda en
ese fichero en formato xml. - Para hacer que nuestra ventana sea la ventana
principal de la aplicación basta con hacer que el widget
que nos generó como ventana principal herede del nuevo
que hemos creado con el QT Designer.
Se pueden añadir los siguientes
objetos:
- Botones: Se pueden añadir diversas
clases de botones. Los que se pueden encontrar son pushbutton,
toolbutton, radiobutton o check button, estos difieren en su
forma pero básicamente pueden realizar las mismas
funciones.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Ejemplos de Botones
- Containers: Se pueden definir como
contenedores que se pueden etiquetar con un titulo y pueden
contener texto,
imágenes
incluso otros objetos tales como botones. Igualmente existen
varios tipos Groupbox, Buttongroup, Frame, etc.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Ejemplos de containers
- Inputs: Este apartado incluye LineEdit
(líneas de edición) pueden servir para recoger
datos que se introducen por teclado,
MultiLineEdit (similar), combobox (listas desplegables) y otros
como slider, spinbox o dial.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Ejemplos de Inputs
- Displays: En este apartado se incluyen
textlabel (etiquetas de texto), pixmapLabel (imágenes),
progressbar (barras de progreso) además de LCDnumber,
Line etc.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Ejemplos de Displays
- Views: Son objetos que pueden albergar iconos,
también en este apartado se incluyen las
tablas.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Ejemplo de views
Todos estos se encuentran en el menú Tools aunque
también se puede encontrarlos en las barras de herramientas
con sus respectivos iconos.
Se pueden realizar señales, conocidas como
Slots y Signal:
- Slots y Signal.- Los slots y signals
(señales) son un mecanismo de comunicación entre objetos, esta es la
principal característica de Qt y es el rasgo que
hace distintas las librerías Qt del resto de
herramientas para la elaboración de GUI, es un mecanismo
de comunicación seguro,
flexible y totalmente orientado a objetos y por supuesto
implementado en C++.
En la programación con GUI se busca que los
cambios producidos en un objeto sean comunicados a otros
objetos, por ejemplo cuando hacemos click en un botón
para que se cierre una ventana, lo que se hace es posibilitar
la
comunicación entre los dos objetos. Otras
herramientas de diseño de GUI llevan a cabo la
comunicación entre objetos usando los llamados
callbacks. Un callback es un puntero a una función,
con este mecanismo si se quiere procesar una determinada
función cada vez que ocurre un evento en un objeto, lo
que se hace es pasar un puntero a otra función (el
callback) a la función deseada y será esta la que
se encargue de llamar al callback en el momento apropiado. Este
tipo de comunicación tiene el inconveniente de no ser
totalmente seguro puesto
que no se sabe si se llamará al callback con los
argumentos apropiados y además la función que
llama al callback debe saber exactamente a que callback llamar,
además es un sistema
inflexible y no esta orientado a objetos.
Se puede crear los archivos *.h y
los *.cpp:
- La aplicación uic permite implementar
la clase del modelo realizado con Qt Designer a partir del
archivo .ui,
es decir obtener los archivos .cpp y
.h para ello utiliza la siguiente instrucción en la
consola.
Para obtener el archivo de
cabecera (.h):
uic -o <ejemploqt.h>
<ejemploqt.ui>
Para obtener el archivo de implementación
(.cpp):
uic -o <ejemploqt.cpp> -impl <ejemploqt.h>
<ejemploqt.ui>
- Con esto ya están los archivos implementados,
es decir la clase de la ventana creada ya esta definida (el
nombre que habíamos elegido es Wizard), pero aun falta
algo. La herramienta moc (meta object compiler) sirve
para obtener archivos de extensión .cpp que se encargan
de implementar el mecanismo de slots/signals.
moc -o <moc_ejemploqt.cpp>
<ejemploqt.h>
Ejemplo:
Programa "Hola mundo"
Se trata del tradicional Hola mundo.
- Creamos una ventana y la llamamos holamundo.
Para ver el gráfico
seleccione la opción "Descargar" del menú
superiorA partir de aquí podríamos proceder
de dos formas diferentes: Diseñar la interfaz desde
el código o usar QT Designer. Seguiremos este
último camino - Si compilamos el proyecto nada más ser
generado, deberíamos obtener una aplicación
con una ventana en blanco.Para ver el gráfico
seleccione la opción "Descargar" del menú
superiorEn el menú Preview del QT Designer
podemos ver como quedaría nuestro formulario con
distintos aspectos según el tema de KDE
seleccionado. Aún tendríamos un problema
antes de dejar concluida la interfaz. Si nos damos cuenta,
en el preview, al maximizar, no queda bien la
disposición de nuestro hola mundo. Podemos hacer dos
cosas: Impedir que se pueda maximizar (sería lo mas
lógico en esta aplicación) o bien hacer que
se redimensione todo. Vamos a hacer esto último para
ilustrar el uso del los layouts. - Dentro del QT Designer elegimos diseñar un
diálogo, lo que hará que se
nos presente un formulario vacío. Añadiremos
una etiqueta (QLabel) y un botón (QPushButton). En
el panel de propiedades cambiaremos el texto de la etiqueta
a una cadena vacía y el caption del botón a
la cadena "Haga click aquí".Para ver el gráfico
seleccione la opción "Descargar"
Ya
sólo nos queda añadir las señales y
los slots. Éste es el mecanismo que tiene QT para
hacer que un widget se comunique con otro al capturarse
eventos de usuario. - Añadimos unos widgets que se llaman
espaciadores (spacers) a ambos lados de la etiqueta y el
botón. En el formulario aparecerán como una
especie de muelles. A continuación seleccionamos los
dos espaciadores y la etiqueta y pulsamos el botón
derecho del ratón. En el menú que sale
seleccionamos layout horizontal.
Hacemos lo mismo con el botón.
Al final seleccionamos todo y elegimos en el menú
layout en rejilla (grid).
El resultado es como el siguiente:Para ver el gráfico
seleccione la opción "Descargar" del menú
superior - Con el botón derecho del ratón sobre el
formulario, seleccionamos en el menú conexiones
(connections…). Creamos una nueva conexión para el
botón. Como señal escogemos
clicked() que se dispara cuando el usuario
haga click en el botón. El siguiente paso
será editar el un nuevo slot.Para ver el gráfico
seleccione la opción "Descargar" del menú
superior - Damos a editar slots… y creamos uno nuevo llamado
diHola(). Se lo asignamos al Form1 y con eso ya
estaría…
#include
#include
#include
#include
#include "interfaz.h"
/** HolaMundo is the base class of the project
*/class HolaMundo : public Form1
{
Q_OBJECT
public:
/** construtor */
HolaMundo(QWidget* parent=0, const char
*name=0);/** destructor */
~HolaMundo();
public slots:
void diHola();
};
#endif
- Sólo nos queda derivar nuestra ventana
inicial HolaMundo de Form1, para que herede de ella. En el
fichero holamundo.h habrá que poner: - En el holamundo.cpp ponemos lo
siguiente:
…
#include "holamundo.h"
HolaMundo::HolaMundo(QWidget *parent, const char
*name) : Form1(parent, name)
{
}
HolaMundo::~HolaMundo()
{
}
void HolaMundo::diHola()
{
this->etiqueta->setText("Hola
mundo!");
}
y con esto finalizaría nuestro ejemplo
PARTE III
Se presentarán los |
MODO GRAFICO
Ventanas del Directorio
Telefónico
Como resultado del Proyecto, presentamos nuestro
programa, que
es un Directorio Telefónico, elaborado bajo Qt Designer y
modificado en los archivos *.cpp y *.h, realizando en estos, las
llamadas o señales.
Este directorio posee una ventana de
inicio:
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Ventana de Inicio (Principal)
La ventana de inicio o principal, puede ingresar al
Directorio, Números Telefónicos, Ayuda, Acerca de y
salir.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Ventana del Directorio
Telefónico
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Ventana del Acerca de
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Ventana del Ayuda
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Ventana del Números
Telefónicos
Al mismo tiempo las
anteriores ventanas, pueden llamar a otras, como se indica a
continuación:
- La ventana de Directorio Telefónico,
puede borrar los datos ingresados, tener una vista preliminar
(en una nueva ventana) y salir. Esta última puede
modificar los datos y salir de la
aplicación.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Ventana de Vista Preliminar del
Directorio Telefónico
- La ventana de Números
Telefónicos, puede escoger el usuario, un
submenú que contiene los botones de: Servicios,
Hospitales, Emergencias y Policía como se muestra a
continuación y regresar al submenú y a la ventana
principal, dentro de cualquier de estás ventanas podemos
salir de la aplicación.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Ventana de Números
Telefónicos de Servicios
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Ventana de Números
Telefónicos de Hospitales
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Ventana de Números
Telefónicos de Emergencia
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Ventana de Números
Telefónicos de Policía
LENGUAJE C++
//Programa del
Directorio Telefónico *.moc_cpp
/***********************************************************************
** UNIVERSIDAD TECNOLÓGICA
AMÉRICA
** FACULTAD DE CIENCIAS DE LA COMPUTACIÓN Y ELECTRÓNICA
** MODALIDAD SEMI-PRESENCIAL
** TERCER NIVEL INFORMATICA "A"
**
** PROYECTO INTEGRADOR
**
** TEMA: APLICACIÓN DE LA LIBRERIA QT EN
UN
** DIRECTORIO TELEFÓNICO
** INTEGRANTES: CRISTHIAN CASTILLO
** ROLANDO GODOY
** TUTORA: ING. ROSITA PAREDES
*********************************************************************/
#undef QT_NO_COMPAT
#include "prointeg.h"
#include <qmetaobject.h>
#include <qapplication.h>
#include <private/qucomextra_p.h>
#if !defined(Q_MOC_OUTPUT_REVISION) ||
(Q_MOC_OUTPUT_REVISION != 26)
#error "This file was generated using the moc from
3.1.1. It"
#error "cannot be used with the include files from this
version of Qt."
#error "(The moc has changed too much.)"
#endif
const char *Form1::className() const
{
return "Form1";
}
QMetaObject *Form1::metaObj = 0;
static QMetaObjectCleanUp cleanUp_Form1( "Form1",
&Form1::staticMetaObject );
#ifndef QT_NO_TRANSLATION
QString Form1::tr( const char *s, const char *c
)
{
if ( qApp )
return qApp->translate( "Form1", s, c,
QApplication::DefaultCodec );
else
return QString::fromLatin1( s );
}
#ifndef QT_NO_TRANSLATION_UTF8
QString Form1::trUtf8( const char *s, const char *c
)
{
if ( qApp )
return qApp->translate( "Form1", s, c,
QApplication::UnicodeUTF8 );
else
return QString::fromUtf8( s );
}
#endif // QT_NO_TRANSLATION_UTF8
#endif // QT_NO_TRANSLATION
QMetaObject* Form1::staticMetaObject()
{
if ( metaObj )
return metaObj;
QMetaObject* parentObject =
QWizard::staticMetaObject();
static const QUMethod slot_0 = {"languageChange", 0, 0
};
static const QMetaData slot_tbl[] = {
{ "languageChange()", &slot_0, QMetaData::Protected
}
};
metaObj = QMetaObject::new_metaobject(
"Form1", parentObject,
slot_tbl, 1,
0, 0,
#ifndef QT_NO_PROPERTIES
0, 0,
0, 0,
#endif // QT_NO_PROPERTIES
0, 0 );
cleanUp_Form1.setMetaObject( metaObj );
return metaObj;
}
void* Form1::qt_cast( const char* clname )
{
if ( !qstrcmp( clname, "Form1" ) )
return this;
return QWizard::qt_cast( clname );
}
bool Form1::qt_invoke( int _id, QUObject* _o
)
{
switch ( _id – staticMetaObject()->slotOffset() )
{
case 0: languageChange(); break;
default:
return QWizard::qt_invoke( _id, _o );
}
return TRUE;
}
bool Form1::qt_emit( int _id, QUObject* _o )
{
return QWizard::qt_emit(_id,_o);
}
#ifndef QT_NO_PROPERTIES
bool Form1::qt_property( int id, int f, QVariant*
v)
{
return QWizard::qt_property( id, f, v);
}
bool Form1::qt_static_property( QObject* , int , int ,
QVariant* ){ return FALSE; }
#endif // QT_NO_PROPERTIES
//Programa del Directorio Telefónico
*.cpp
/***********************************************************************
** UNIVERSIDAD TECNOLÓGICA
AMÉRICA
** FACULTAD DE CIENCIAS DE LA COMPUTACIÓN Y
ELECTRÓNICA
** MODALIDAD SEMI-PRESENCIAL
** TERCER NIVEL INFORMATICA "A"
**
** PROYECTO INTEGRADOR
**
** TEMA: APLICACIÓN DE LA LIBRERIA QT EN
UN
** DIRECTORIO TELEFÓNICO
** INTEGRANTES: CRISTHIAN CASTILLO
** ROLANDO GODOY
** TUTORA: ING. ROSITA PAREDES
**********************************************
#ifndef FORM1_H
#define FORM1_H
#include <qvariant.h>
#include <qpixmap.h>
#include <qwizard.h>
class QVBoxLayout;
class QHBoxLayout;
class QGridLayout;
class QComboBox;
class QLabel;
class QLineEdit;
class QPushButton;
class QTextBrowser;
class QWidget;
class Form1 : public QWizard
{
Q_OBJECT
public:
Form1( QWidget* parent = 0, const char* name = 0, bool
modal = FALSE, WFlags fl = 0 );
~Form1();
QWidget* page;
QLabel* pixmapLabel1;
QPushButton* pushButton2;
QPushButton* pushButton3;
QPushButton* pushButton1;
QPushButton* pushButton3_2;
QPushButton* pushButton22_5_2_2;
QWidget* page_2;
QLabel* pixmapLabel1_2;
QLabel* pixmapLabel1_2_2;
QLabel* pixmapLabel1_2_3;
QLabel* pixmapLabel1_2_3_2;
QPushButton* pushButton17;
QPushButton* pushButton17_2;
QPushButton* pushButton17_3;
QPushButton* pushButton17_4;
QPushButton* pushButton33;
QWidget* page_3;
QLabel* textLabel1_3;
QLabel* pixmapLabel1_2_4;
QLabel* textLabel1_2_2;
QPushButton* pushButton33_3;
QPushButton* pushButton22_4;
QWidget* page_4;
QLabel* textLabel1_4;
QLabel* textLabel1_2_3;
QLabel* pixmapLabel1_2_2_2;
QPushButton* pushButton33_3_2;
QPushButton* pushButton22_3;
QWidget* page_5;
QLabel* textLabel1_4_2;
QLabel* textLabel1_2_3_2;
QLabel* pixmapLabel1_2_3_2_2;
QPushButton* pushButton33_3_3;
QPushButton* pushButton22_2;
QWidget* page_6;
QLabel* pixmapLabel1_2_3_3;
QLabel* textLabel1;
QLabel* textLabel1_2;
QPushButton* pushButton33_3_4;
QPushButton* pushButton22;
QWidget* page_7;
QLabel* textLabel1_2_2_2_2;
QLabel* pixmapLabel2;
QLabel* textLabel1_2_2_2_2_2;
QLabel* textLabel1_2_2_2;
QLabel* textLabel1_2_2_2_2_3;
QLabel* textLabel1_5;
QLabel* textLabel1_2_4;
QPushButton* pushButton33_2;
QLineEdit* lineEdit1_2;
QLineEdit* lineEdit1_3;
QLineEdit* lineEdit1_4;
QLineEdit* lineEdit1_5;
QComboBox* comboBox1;
QLineEdit* lineEdit1;
QComboBox* comboBox1_2;
QPushButton* pushButton5;
QPushButton* pushButton5_2;
QWidget* page_8;
QLabel* textLabel1_2_2_3;
QLabel* textLabel1_3_2_3;
QLabel* textLabel1_3_3;
QLabel* textLabel1_3_2_4;
QLabel* textLabel1_2_3_3;
QLabel* textLabel1_3_2_6;
QLabel* textLabel1_2_2_2_3;
QLabel* textLabel1_3_2_2;
QLabel* textLabel1_2_2_2_2_3_2;
QLabel* textLabel1_2_2_2_2_2_2;
QLabel* textLabel1_3_2_5;
QLabel* pixmapLabel2_2;
QLabel* textLabel1_3_2_7;
QPushButton* pushButton33_2_2;
QLabel* textLabel1_3_2;
QPushButton* pushButton5_3;
QPushButton* pushButton5_3_2;
QWidget* page_9;
QLabel* textLabel2_2;
QLabel* pixmapLabel1_3;
QTextBrowser* textBrowser1;
QLabel* textLabel2_2_2;
QLabel* textLabel2_2_2_2;
QPushButton* pushButton33_2_3_2;
QPushButton* pushButton22_5_2;
QWidget* page_10;
QLabel* pixmapLabel1_4;
QLabel* pixmapLabel1_4_3_3;
QLabel* pixmapLabel1_4_3;
QLabel* pixmapLabel1_4_3_2;
QPushButton* pushButton33_2_3;
QPushButton* pushButton22_5;
QTextBrowser* textBrowser1_2_2_2;
QTextBrowser* textBrowser1_2_2;
QTextBrowser* textBrowser1_2;
protected:
protected slots:
virtual void languageChange();
private:
QPixmap image0;
QPixmap image1;
QPixmap image2;
QPixmap image3;
QPixmap image4;
QPixmap image5;
QPixmap image6;
QPixmap image7;
};
#endif // FORM1_H
//Programa del Directorio Telefónico
*.h
/***********************************************************************
** UNIVERSIDAD TECNOLÓGICA
AMÉRICA
** FACULTAD DE CIENCIAS DE LA COMPUTACIÓN Y
ELECTRÓNICA
** MODALIDAD SEMI-PRESENCIAL
** TERCER NIVEL INFORMATICA "A"
**
** PROYECTO INTEGRADOR
**
** TEMA: APLICACIÓN DE LA LIBRERIA QT EN
UN
** DIRECTORIO TELEFÓNICO
** INTEGRANTES: CRISTHIAN CASTILLO
** ROLANDO GODOY
** TUTORA: ING. ROSITA PAREDES
*********************************************************************/
#ifndef FORM1_H
#define FORM1_H
#include <qvariant.h>
#include <qpixmap.h>
#include <qwizard.h>
class QVBoxLayout;
class QHBoxLayout;
class QGridLayout;
class QComboBox;
class QLabel;
class QLineEdit;
class QPushButton;
class QWidget;
class Form1 : public QWizard
{
Q_OBJECT
public:
Form1( QWidget* parent = 0, const char* name = 0, bool
modal = FALSE, WFlags fl = 0 );
~Form1();
QWidget* page;
QPushButton* pushButton3_2;
QPushButton* pushButton3;
QPushButton* pushButton2;
QLabel* pixmapLabel1;
QPushButton* pushButton1;
QWidget* page_2;
QPushButton* pushButton5_2;
QLabel* textLabel1;
QLabel* textLabel1_2;
QLabel* textLabel1_2_2;
QLabel* textLabel1_2_2_2;
QLabel* textLabel1_2_2_2_2;
QLabel* textLabel1_2_2_2_2_2;
QPushButton* pushButton5;
QLabel* pixmapLabel2;
QComboBox* comboBox1;
QLineEdit* lineEdit1;
QLineEdit* lineEdit1_2;
QComboBox* comboBox1_2;
QLineEdit* lineEdit1_3;
QLineEdit* lineEdit1_4;
QLineEdit* lineEdit1_5;
QWidget* page_3;
QLabel* textLabel1_2_2_3;
QLabel* pixmapLabel2_2;
QPushButton* pushButton5_3_2;
QPushButton* pushButton5_3;
QLabel* textLabel1_2_3;
QLabel* textLabel1_2_2_2_2_2_2;
QLabel* textLabel1_3;
QLabel* textLabel1_3_2;
QLabel* textLabel1_3_2_2;
QLabel* textLabel1_3_2_3;
QLabel* textLabel1_2_2_2_2_3;
QLabel* textLabel1_2_2_2_3;
QLabel* textLabel1_3_2_5;
QLabel* textLabel1_3_2_6;
QLabel* textLabel1_3_2_7;
QLabel* textLabel1_3_2_4;
protected:
protected slots:
virtual void languageChange();
private:
QPixmap image0;
};
#endif // FORM1_H
Y RECOMENDACIONES
Conclusiones
- En Qt Designer, se facilitó las aplicaciones
con la Librería Qt, es por eso que el modo
gráfico existe mejor comprensión que en las
líneas de código en C++, siendo más
factible la implementación de señales entre los
botones, ya que se pueden conectar tantos signals como se desee
a un slots, y una signal puede ser conectado a tantos slots
como se quiera, incluso se puede conectar un signals a otro
signals. - Todas las clases que derivan de la clase Qobject o de
algunas de sus subclases (por ejemplo Qwidget como es el caso
de nuestra ventana) pueden ser conectados por medio del
mecanismo de slots y signals. - Qt Designer, desarrolló nuestro potencial
creativo en el momento al formar la estructura
de nuestro Directorio Telefónico.
Recomendaciones
- Que la documentación entregada de QT Designer,
se tome en cuenta como documento base para futuros
Proyectos. - Que en el momento de elaborar una aplicación
en Qt Designer, se utilice la ventana QWizard, por cuanto
permite agregar forms, sin mayor complejidad. - Con los pushbuttons es recomendable utilizar los
signals de click y no los de enter, por cuanto, al usuario
prefiere manipular el mouse, antes
que el teclado. - Que se actualice constantemente los Equipos de
Computación con las nuevas versiones de los Sistemas
Operativos, por cuanto en este tema, no tuvimos la
facilidad de contar con un Equipo Computacional, que contengan
la versión de QT Designer. - Para próximas investigaciones, se realice la
presentación del primer borrador, con todos los tutores
para que puedan examinar el documento fuente y el
desenvolvimiento del grupo.
Entrevista:
- Con la tutora de la asignatura Programación
II – Ing. Rosita Paredes.
Navegación en Internet:
Fuentes bibliográficas, básicamente
hemos utiliza el medio del Internet, por
cuanto no existen libros ni
folletos de la Librería Qt, puesto que es una nueva
librería que no se contempla en libros
actualizados.
http://gsyc.escet.urjc.es/robotica/manual-vision/node23.html
http://gsyc.escet.urjc.es/robotica/manual-vision/node24.html
http://gsyc.escet.urjc.es/robotica/manual-vision/node27.html
http://www.trolltech.com/products/qt/freelicense.html
http://www.sindominio.net/biblioweb/telematica/open-sources-html/node116.html
http://developer.kde.org/documentation/books/kde-2.0-development/p05.html
http://www.augcyl.org/glol/old/N_2/Kdevelop/node4.html
http://www.augcyl.org/glol/old/N_2/Kdevelop/node5.html
http://www.augcyl.org/glol/old/N_2/Kdevelop/node6.html- http://www.troltech.com En
esta web se puede
encontrar desde tutoriales
y manuales para
iniciarse en al uso de las librerías Qt.
Autor:
Rolando Godoy Lara
Cristhian Castillo Martínez
ESTUDIANTES DE LA FACULTAD DE CIENCIAS DE LA
COMPUTACIÓN Y ELECTRÓNICA DE LA UNIVERSIDAD
TECNOLÓGICA AMÉRICA
DE LA CIUDAD DE QUITO * ECUADOR