PARTE I
APLICACIÓN DE LA LIBRERÍA QT EN LA ELABORACIÓN DE UN DIRECTORIO TELEFÓNICO
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.
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.
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.
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:
El directorio telefónico tendrá las siguientes directrices:
Los métodos investigamos que hemos utilizado se detallan a continuación:
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:
Características:
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 ver el gráfico seleccione la opción "Descargar" del menú superior
Para ver el gráfico seleccione la opción "Descargar" del menú superior
Para ver el gráfico seleccione la opción "Descargar" del menú superior
Para ver el gráfico seleccione la opción "Descargar" del menú superior
Se pueden añadir los siguientes objetos:
Para ver el gráfico seleccione la opción "Descargar" del menú superior
Ejemplos de Botones
Para ver el gráfico seleccione la opción "Descargar" del menú superior
Ejemplos de containers
Para ver el gráfico seleccione la opción "Descargar" del menú superior
Ejemplos de Inputs
Para ver el gráfico seleccione la opción "Descargar" del menú superior
Ejemplos de Displays
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:
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:
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>
moc -o <moc_ejemploqt.cpp> <ejemploqt.h>
Ejemplo:
Programa "Hola mundo"
Se trata del tradicional Hola mundo.
Para ver el gráfico seleccione la opción "Descargar" del menú superior
A 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
Para ver el gráfico seleccione la opción "Descargar" del menú superior
En 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.
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.
Para ver el gráfico seleccione la opción "Descargar" del menú superior
Para ver el gráfico seleccione la opción "Descargar" del menú superior
...
#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
...
#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 resultado en Modo Grafico y en Lenguaje C++ |
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:
Para ver el gráfico seleccione la opción "Descargar" del menú superior
Ventana de Vista Preliminar del Directorio Telefónico
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
Recomendaciones
Entrevista:
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.
Autores:
Rolando Godoy Lara
rolando_godoy[arroba]hotmail.com
Cristhian Castillo Martínez
cristhian_castillo1982[arroba]hotmail.com
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
Trabajos relacionados
Ver mas trabajos de Programacion |
|
Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.