qt 4.9 dividir programa en tres partes
TRANSCRIPT
Qt 4.9 dividir un programa en 3 partes sencillo
Vamos a ver el código directamente .
/********************************************************************/main.cpp
/********************************************************************/
#include <QtGui/Application>#include “libreta.h”
int main ( int argc, char *argv[]){ QtApplication a ( argc , argv ) ; libreta *lib = new libreta ; lib->show(); return a.exec(); }
/********************************************************************/libreta.h
/********************************************************************/
#ifndef LIBRETA_H#define LIBRETA_H
#include <QtGui/QWidget>#include <QMap>#include “buscar.h”
class QLabel ;class QLineEdit;class QPushButton ;
class libreta : public QWidget
{ Q_OBJECT
public : libreta (QWidget *parent = 0 ) ;
private :
QLineEdit * nombreLine ;
Boton *dialogo ;
} ;
#endif // LIBRETA_H
/********************************************************************/libreta.cpp
/********************************************************************/
#include <QtGui>#include “libreta.h”
libreta :: libreta(QWidget *parent ) : QWidget (parent )
{ QLabel * nombreLabel = new QLabel (“Nombre :” ); nombreLine= new QLineEdit ;
QLabel * direccionLabel = new QLabel ( “ Direccion : “ );
dialogo = new boton ;
QGridLayout *mainLayout = new QGridLayout ;
mainLayout ->addWidget ( nonbreLabel , 0 , 0 ) ; mainLayout ->addWidget ( nonbreLine , 0 , 1 ) ; mainLayout ->addWidget ( direccionLabel , 1, 0 ) ; mainLayout ->addLayuot ( dialogo , 1, 1 );
setLayout (mainLayout ) ; setWindowTitle (“ Simple Libreta de Direcciones “ ) ;}
/********************************************************************/buscar.h
/********************************************************************/
#ifndef BUSCAR_H#define BUSCAR_H
#include <QLayout>
class QLineEdit ;class QPushButton ;
class Boton : public QVBoxLayout
{
Q_OBJECT
public :
Boton (QWidget *parent = 0 ) ;
public slots :
private :
QPushButton * Button :
} ;
#endif // BUSCAR_H
/********************************************************************/buscar.cpp
/********************************************************************/
#include <QtGui>#include “buscar.h”
Boton ::Boton(QWidget *parent) : QVBoxLayout (parent){
Button = new QpushButton( "Buscar" ); addWidget(Button) ;
}
/********************************************************************/
Procedemos a compilar
Abrimos la carpeta que contenga los archivos en C++ ( .cpp ) con sus correspondientes archivos de cabeceras (.h )
Procedemos a compilar :
colocamos :
qmake -project
qmake
make
Ahora ya tenemos nuestro autoejecutable le damos doble clix sobre el autoejecutablepara ejecutarlo .
Nuestro programa .
Explico el programa
Primero explico la clase principal o archivo main que es el corazón de nuestro programa .
main.cpp
/**************************************************************/
#include <QtGui/Application>#include “libreta.h”
int main ( int argc, char *argv[]){ QtApplication a ( argc , argv ) ; libreta *lib = new libreta ; lib->show(); return a.exec(); }
Vemos la subclase o clase secundaria luego de la clase principal o main .(en ingles clase = class ) .
Esta es nuestra subclase declarada dentro del main para invocarla
libreta *lib = new libreta ; lib->show();
Procedemos a definir la subclase en el archivo de cabecera libreta.h .
#ifndef LIBRETA_H#define LIBRETA_H
#include <QtGui/QWidget>#include <QMap>#include “buscar.h”
class QLabel ;class QLineEdit;class QPushButton ;
class libreta : public QWidget
{ Q_OBJECT
public : libreta (QWidget parent = 0 );
private :
QLineEdit * nombreLine ;
Boton *dialogo ;
} ;
#endif // LIBRETA_H
Esta es nuestra definición de la subclase .
class libreta : public QWidget
{ Q_OBJECT
public : libreta (QWidget parent =0 );
private :
QLineEdit * nombreLine ;
Boton *dialogo ;
} ;
Definimos nuestro archivo de cabecera libreta.h
Principio :
#ifndef LIBRETA_H#define LIBRETA_H
Final
#endif // LIBRETA_H
Invocamos las librerías que usaremos
#include <QtGui/QWidget>#include <QMap>#include “buscar.h”
<QtGui/QWidget>= invocamos todos los widgets de Qt .
<QMap>= invocamos la libreria de señales de Qt .
"buscar.h"= invocamos al archivo de cabecera buscar.h para llamar a las funciones del archivo buscar.cpp .
Definimos las subclases classes para los widgets definidos en private
class Qlabel ;class QlineEdit;class QPushButton ;
En private declaramos si queremos otros widgets que usaremos para nuestra interfaz grafica .
private :
QLineEdit * nombreLine ;
Boton *dialogo ;
Vemos atentamente Boton * dialogo ; es una nueva subclase definida en el archivo decabecera buscar.h que contendrá un botón con label llamada buscar .a esta subclase la declaramos en libreta.cpp
/****************************************************************************/
libreta.cpp
Definimos la subclase libreta en el archivo libreta.cpp
#include <QtGui>#include “libreta.h”
libreta : : libreta(QWidget *parent ) : QWidget (parent )
{ Qlabel * nombreLabel = new QLabel (“Nombre :” ); nombreLine= new QLIneEdit ;
QLabel * direccionLabel = new QLabel ( “ Direccion : “ );
dialogo = new boton ;
QGridLayout *mainLayout = new QGridLayout ;
mainLayout ->addWidget ( nonbreLabel , 0 , 0 ) ; mainLayout ->addWidget ( nonbreLine , 0 , 1 ) ; mainLayout ->addWidget ( direccionLabel , 1, 0 ) ; mainLayout ->addLayuot ( dialogo , 1, 1 );
setLayout (mainLayout ) ; setWindowTitle (“ Simple Libreta de Direcciones “ ) ;}
Pueden mirar que en libreta.cpp declaramos la nueva subclase Boton que estará contenidoen la subclase libreta .
la subclase Boton es un widget layout o caja en Qt , este widget contiene un boton en el archivo buscar.cpp .Esta es nuestra subclase
dialogo = new Boton ;
Nuestra subclase Boton es un widget layout (caja simple ) estará contenida en el widget mainLayout
mainLayout->addLayout (dialogo , 1 ,1 );
/******************************************************************************/
Procedemos a definir la subclase Boton en el archivo de cabecera buscar.heste paso es similar a lo que hicimos en el archivo de cabecera libreta.h
#ifndef BUSCAR_H#define BUSCAR_H
#include <QLayout>
class QLineEdit ;class QPushButton ;
class Boton : public QVBoxLayout
{
Q_OBJECT
public :
Boton (QWidget *parent = 0 ) ;
public slots :
private :
QPushButton * Button :
} ;
#endif // BUSCAR_H
Esta es nuestra subclase Boton que en realidad es un widget QVBoxLayoutes una caja vertical .
class Boton : public QVBoxLayout
{ Q_OBJECT
public :
Boton (QWidget *parent = 0 ) ;
public slots :
private :
QPushButton * Button :
Vemos la definicion de nuestra subclase Boton como QVBoxLayout
class Boton : public QVboxLayout
Declaramos un widget button , que detallaremos en el archivo buscar.cpp
private :
QPushButton *Button ;
/*****************************************************************************/
Ahora vemos el archivo buscar.cpp en el definimos la subclase Boton y definimosel widget button que estará contenido en la subclase Boton que en realidad es un un widget layout o caja que contiene al widget button .
#include <QtGui>#include “buscar.h”
Boton ::Boton(QWidget *parent) : : QVBoxLayout (parent){
Button = new QpushButton( "Buscar" ); addWidget(Button) ;
}
Autor del tutorial : Mariano R Gaudix
E-mail : [email protected]
Red social : Google Plus