qt4eclipse
-
Upload
carlos-castaneda -
Category
Documents
-
view
221 -
download
0
Transcript of qt4eclipse
-
8/2/2019 qt4eclipse
1/16
02/10/2007
Int roduccin a laprogramacin con Qt 4 eneclipseUn ide libre y de calidad para desarrollo con
Qt
Jhon James Quintero Osorio
-
8/2/2019 qt4eclipse
2/16
Jhon James Quintero Osorio
1
Introduccin a la programacin con
Qt 4 en eclipseIntroduccin
Hace muchos aos que le vengo siguiendo la pista a varios proyectos de software que me parecen
interesantes, uno de ellos es Qt, librera con la que han sido desarrolladas varias aplicaciones, una de
las ms significativas es KDE, el famoso y vistoso entorno de escritorio para Linux y otros Unixes.
Despus de haber intentado compilar un proyecto simple en los siguientes entornos:
QDevelop.
MonkeyStudio CodeBloks
Y no conseguirlo, muy posiblemente por mi ignorancia y facilismo, me sent frustrado pues, como es
posible que un framework tan maduro (en su versin libre) no tenga un buen entorno de desarrollo?
Pues en una de mis visitas a la pgina de Trolltech, me encontr con que haban liberado la versin 1
del plugn de integracin QT eclipse para las versiones Qt 4.3.1 y eclipse 3.3 para C/C++.
Toolkits para const ruir GUI s
Donde los bits y las personas se encuentranNegroponte, 1994
La mayora de las aplicaciones actuales se caracterizan por tener una interfaz de usuario agradable
para el usuario (por lo menos as debera ser), adems la cantidad lneas de cdigo correspondiente a
la interfaz de usuario se hace cada vez mayor, es por ello que la construccin de dichas interfaces desde
cero es una labor que en la mayora de las veces no se justifica, pues muchas organizaciones, se han
encargado de realizar desarrollos que permiten construir interfaces de muy buena apariencia
rpidamente.
-
8/2/2019 qt4eclipse
3/16
Jhon James Quintero Osorio
2
Existen diversos toolkits para la construccin de interfaces de usuario, entre las cuales podemos citar:
gtk(GIMP ToolKit, http://www.gtk.org). Librera realizada en C (orientado a objetos)inicialmente creada para desarrollar el programa de manipulacin de imgenes GIMP, ahora
usada en mltiples aplicaciones, GNOME por ejemplo.
Caractersticas:
o Multiplataforma (HP-UX, SUN-Solaris, Linux,
Windows, BeOs, ).
o Libre, licencia GPLo Tiene como objetivos,
Correccin,
Rendimiento,
Usabilidad.
Figur a 1 Apl icac in desa r r o l lad a con GTK.
-
8/2/2019 qt4eclipse
4/16
Jhon James Quintero Osorio
3
WxWidge t s . Es un toolkit de cdigo abierto, desarrollado en C++, para crear aplicacionesmultiplataforma (Windows, Windows CE, Linux, Mac Os, ). Al estar programado en C++
aprovecha toda la versatilidad de la orientacin a objetos.
Figur a 2 Aplicac in con WxW idget s .
Adems de los anteriores tambin se encuentran gtkmm, vtk, vcl, tcl,tk
-
8/2/2019 qt4eclipse
5/16
Jhon James Quintero Osorio
4
Introduccin a Qt
La librera Qt es desarrollada por la empresa noruega TrollTech, con licencias tanto libre como
comercial, desarrollada en C++ con aadidos. Las Qt a la fecha en sus versiones 4.X es un toolkitmaduro que cuenta aproximadamente con 500 clases, ms de 9000 funciones y 500.000 lneas de
cdigo y que le d al programador mucha de la potencia que le brindan lenguajes como C# o Java con
la eficiencia de cdigo compilado en C++.
Las Qt, al igual que otros toolkits no solo cuentan con clases para la construccin de interfaces de
usuario, tambin incluyen soporte para dibujo en 2D, hilos, red, bases de datos, etc. La diferencia
fundamental entre Qt y las otras libreras es que Qt le agrega al C++ estndar los conceptos de signal y
slot, los cuales son similares en funcionalidad al concepto de callback (puntero a una funcinXque es
pasado a otra para que sta ltima llame aXen el momento adecuado).
Una de las caractersticas de las interfaces de usuario actuales es la flexibilidad, y si visualizamos cada
uno de los elementos de la interfaz de usuario como un objeto lo que tenemos es un montn de objetos
intercambiando informacin, es precisamente all donde la magia de las Qt tiene lugar, se define una
s e a l / s i g na l como un aviso que un objeto puede emitir cuando le ocurre algo (un cambio de estado
importante, tambin denominado evento), un s lot es un mtodo de un objeto que puede ser llamado
cuando se genera una seal particular. Las clases que provee Qt poseen signals y slots predefinidos, sin
embargo es muy fcil crear propios en nuevos tipos que deriven de la clase QObjetct.
F i gu r a 3 M e c a n i s m o d e S i g n a l s / s lo t s .
-
8/2/2019 qt4eclipse
6/16
Jhon James Quintero Osorio
5
Instalando lo necesario
Primero veamos lo que necesitamos:
1. Es posible trabajar con cygwin o mingw, aqu se mostrar como hacer el montaje con mingw.2. Las libreras QT. Aqu las QT 4.3.1.3. Una maquina virtual de java, 5 o 6.4. Eclipse 3.3 europa para C/C++5. El plugin QT para eclipse.
Instalando mingw
Es necesario del sitio web de mingw (usar un motor de bsqueda), bajar los siguientes instaladores:
binutils. gcc-core. mingw-runtime. mingw-api gcc-g++. gdb mingw32-make
Generalmente estos archivos son archivos con extencin gz por lo cual es necesario utilizar un
programa de descompresin como winrar, winace o cualquiera que soporte este tipo de compresin.
Creamos un directorio digamos en C, llamado mingw y all descomprimimos los archivos
mencionados.
Es importante observar que para trabajar en C/C++ no es necesario instalar el make pues eclipse trae
un sistema de manejo de proyectos, sin embargo los proyectos Qt utilizan make para construir el
proyecto.
Instalando las Qt4.3.1
De la pagina de Trolltech, es posible bajar la ultima versin (4.3.1 a la fecha) de las libreras Qt, que
nos permitirn desarrollar aplicaciones en C++, multiplataforma y con una muy buena apariencia.
El instalador es un archivo ejecutable normal en Windows lo ejecutamos y obtenemos algo como:
-
8/2/2019 qt4eclipse
7/16
Jhon James Quintero Osorio
6
Damos las instrucciones necesarias hasta que aparezca:
En donde indicamos la instalacin de mingw que vamos a usar, y listo (si sale un problema con
w32api.h no hacerle caso y continuar tranquilos).
La mquina virt ual de javaPues ahora con las cantidades de espacio en disco y memoria ram de las computadoras no es mucho
problema que se instale una mquina virtual de java con incluso todo el sdk, esto se consigue en la
pagina de Sun microsystems, es posible usar la versin de 5 o 6 de java. Aqu no se describir la
instalacin pues es en verdad muy simple.
-
8/2/2019 qt4eclipse
8/16
Jhon James Quintero Osorio
7
Eclipse para C/ C++
Eclipse ser el entorno en el cual deseamos desarrollar las aplicaciones en C++, como eclipse necesita
de java para poder funcionar, lo instalamos despus de tener el entorno java instalado. La distribucin
de eclipse que vamos a usar es eclipse-cpp-europa-fall-win32.zip que es especifica para desarrollar en
C/C++, es decir no es necesario instalar ningn plugin adicional para los desarrollos bsicos.
Figur a 4 Ec lipse in ic ian do .
Al entrar a eclipse nos aparece una pantalla as:
F ig u r a 5 P a n t a l la d e b i e n v e n i d a d e e c l ip s e C / C + +
Despus de tener el eclipse instalado podemos crear nuestros primeros proyectos en C/C++, siguiendo
el tutorial.
-
8/2/2019 qt4eclipse
9/16
Jhon James Quintero Osorio
8
El plugin Qt para eclipse
Este plugin nos permitir desarrollar aplicaciones en C++ usando las libreras Qt, el plugin esta
diseado para trabajar con la versin 4.3.1 de las Qt. En el sitio web de Trolltech tambin podemos
bajar la versin del plugin para nuestro sistema, en nuestro caso qt-eclipse-integration-win32-
1.0.0.exe, instalador que al ejecutarlo pedir la ruta de instalacin y la ruta del eclipse al que queremos
integrarlo. Despus de ejecutar el instalador podemos lanzar el eclipse y nos preguntar que si
deseamos abrir un recorrido por el desarrollo con Qt, si indicamos que si podremos configurar el
plugin para que tome las libreras que instalamos en el segundo paso de este proceso.
F i gu r a 6 Co n f i gu r a n d o e l p l u g in c o n l a s i n s t a l a c io n e s d e Q t .
Programa de ej emplo en Qt 4 con Eclipse
Bien ahora que tenemos todo lo necesario para hacer nuestros programas en C++ con eclipse, vamos a
realizar un ejemplo sencillo, un programa que realice el ajuste por mnimos cuadrados de un conjunto
de datos atreves de una interfaz grfica de usuario. Para esta aplicacin supondremos que la gsl estinstalada en en C:\mingw, aunque podran estar en cualquier parte y configurarlo en el proyecto.
Inicialmente entramos a eclipse y file, new, Qt Gui Projet, si no aparece buscarlo en other. Le damos un nombre al proyecto, eclipse creara un directorio para este con el mismo nombre
del proyecto.
Eclipse muestra un dialogo con el nombre de la primera Clase Qt del proyecto, generalmetnees mejor cambiarla y colocar un nombre que empiece por maysculas.
-
8/2/2019 qt4eclipse
10/16
Jhon James Quintero Osorio
9
F i gu r a 7 W iz a r d p a r a e l n o m b r e y t ip o d e l a p r i m e r a c l a s e Q t.
Luego el wizard nos pregunta si deseamos mdulos adicionales de las Qt.
Si por alguna razn no hemos configurado las instalaciones Qt que tengamos, eclipse nos dir que si lo
deseamos hacer.
-
8/2/2019 qt4eclipse
11/16
Jhon James Quintero Osorio
10
Posiblemente si seleccionamos el proyecto y tratamos de construirlo encontramos problemas en la
ejecucin de mingw32-make, esto se debe a que la ruta del mingw no ha sido configurada en el
proyecto, para eso damos click sobre el proyecto, luego click izquierdo y seleccionamospropierties; en
las opciones de C/ C++ Ma ke Project, seleccionamos la pestaa enviromenty agregamos a la variable
PATH la ruta del directorio bin del mingw, presionamos Ok y luego de nuevo Ok en el dialogo mayor, y
listo.
Ahora eclipse puede encontrar los ejecutables necesarios para construir la aplicacin.
Si todo ha ido bien podemos seleccionar el proyecto seleccionar la opcin de ejecutar (ctrl-f11) si es la
primera vez que lo hacemos para el proyecto nos aparecer un dialogo para seleccionar el tipo de
lanzamiento que deseamos (a mi me funciona bien gdb/mi) y debemos obtener algo como lo siguiente:
F ig u r a 8 L a v e n t a n a p r i n c ip a l d e l a a p l ic a c i n .
-
8/2/2019 qt4eclipse
12/16
Jhon James Quintero Osorio
11
Bien ahora usaremos el editor de interfaces de usuario para disear la ventana principal, solo es
necesario dar click sobre el archivo con extencion ui del proyecto.
Trabajando un poco con los widgets podemos obtener algo como:
Dados que necesitamos tambin la librera gsl para realizar nuestro ejemplo utilizamos el editor visualdel archivo de proyecto (extencin .pro), ese archivo es el que controla la totalidad del proceso de
construccin de la aplicacin, dado que la librera gsl est en el directorio del mingw, debemos agregar
a la ruta de los archivos de cabecera c:/mingw/include/gsl-1.8
F i gu r a 9 Co n f i gu r a c i n d e l a r c h i v o d e l p r o y e ct o .
Se agrega la
ruta para los
include
-
8/2/2019 qt4eclipse
13/16
Jhon James Quintero Osorio
12
Despus de agregar la ruta para los archivos de cabecera es necesario tambin agregar las libreras
para el proceso de enlace y su respectiva ruta, es importante indicar que la ruta debe escribirse ///,
si con slash.
F i gu r a 1 0 C o n f ig u r a c i n d e l ib r e r a s p a r a e l e n l a ce .
Ahora el programa que funcionando:
A continuacin se muestra la implementacin de la clase principal del programa.
La ruta de la
librera GSL, y
los archivos
necesarios
para el enlace
-
8/2/2019 qt4eclipse
14/16
Jhon James Quintero Osorio
13
#ifndef PPAL_H
#define PPAL_H
#include#include"ui_ppal.h"
classPpal : publicQMainWindow
{
Q_OBJECT
public:
Ppal(QWidget *parent = 0);
~Ppal();
private:
Ui::PpalClassui;
private slots:
voidaddDatas();
voiddelRow();
voidcalc();
voidon_btnAdd_clicked();
};
#endif// PPAL_H
-
8/2/2019 qt4eclipse
15/16
Jhon James Quintero Osorio
14
#include
#include
#include
#include
#include"ppal.h"
Ppal::Ppal(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
connect(ui.btnAdd,SIGNAL(clicked()),this,SLOT(addDatas()));
connect(ui.btnCalcular,SIGNAL(clicked()),this,SLOT(calc()));
}
Ppal::~Ppal()
{
}voidPpal::on_btnAdd_clicked()
{
}
voidPpal::addDatas()
{
QTableWidgetItem* item=0;bool st=false;
// tratamos de convertir el valor en X
ui.leX->text().toDouble(&st);
if(st!=true){
return;
}
// tratamos de convertir el valor en Y
ui.leY->text().toDouble(&st);
if(st!=true)
{return;
}
//Se agrega una fila a la tablaui.tbDatos->setRowCount(ui.tbDatos->rowCount()+1);
item = newQTableWidgetItem(ui.leX->text());
ui.tbDatos->setItem(ui.tbDatos->rowCount()-1,0,item);
item = newQTableWidgetItem(ui.leY->text());
ui.tbDatos->setItem(ui.tbDatos->rowCount()-1,1,item);
}
-
8/2/2019 qt4eclipse
16/16
Jhon James Quintero Osorio
15
voidPpal::delRow()
{
//Escribeme!
}
voidPpal::calc()
{
double* x=0;
double* y=0;
int n;
n=ui.tbDatos->rowCount();
x= newdouble[n];
y= newdouble[n];
double a0,a1,cov00,cov01,cov11,sumsq;
for(int i=0;iitem(i,0)->text().toDouble();
y[i]=ui.tbDatos->item(i,1)->text().toDouble();
}
std::cout