SlideShare una empresa de Scribd logo
1 de 8
Descargar para leer sin conexión
Laboratorio Inform´tica II: Pr´ctica 5
                                   a           a
                                      Felipe Lennis
                           felipe.lennis@microe.udea.edu.co

                               26 de noviembre de 2012


Objetivos
      Realizar una introducci´n al framework Qt y al IDE Qt Creator para la construcci´n
                             o                                                        o
      de interfaces gr´ficas de usuario.
                      a

      Construir una interfaz gr´fica simple empleando los conceptos de signal y slot.
                               a


1.     Instalaci´n del QtSDK en Ubuntu Linux
                o
    Del sitio web www.developer.nokia.com/Develop/Qt/ descargar el QtSDK para Lin-
ux de 32 o 64 bits, seg´n sea el caso. Los siguientes comandos instalan el SDK (Software
                        u
Developmente Kit), incluido el IDE (Integrated Development Environment) QtCreator en
el directorio de usuario (home) y no en la ra´ del sistema.
                                             ız

$   sudo apt-get install cmake mesa-common-dev freeglut3-dev
$   sudo apt-get install binutils-gold
$   chmod +x QtSdk-offline-linux-x86-v1.2.1.run
$   ./QtSdk-offline-linux-x86-v1.2.1.run -style cleanlooks


2.     Introducci´n al Qt Creator
                 o
   Qt Creator permite la edici´n de c´digo en C++ y el dise˜o de interfaces gr´ficas
                               o      o                       n                   a
de usuario. Adem´s es posible hacer debug, compilar y ejecutar las aplicaciones desde el
                a
mismo entorno de desarrollo (IDE).




                                           1
Para crear nuestra primera aplicaci´n, hacemos click en File->New File or Project-
                                       o
>Other Project->Qt Console Application, lo que inicializa una aplicaci´n para con-
                                                                           o
sola sin elementos gr´ficos para la interfaz de usuario. En la pesta˜a Edit, editamos el
                      a                                            n
archivo main.cpp de la siguiente manera:




                                          2
Qt posee un gran n´mero de clases, debido a esto es fundamental hacer uso de la
                       u
documentaci´n, que se encuentra disponible mediante la pesta˜a Help.
           o                                                n




3.    Creando una Interfaz Grafica de Usuario (GUI)
    Qu´ es un Widget? Un Widget es un componente visual, por ejemplo, un bot´n, un
       e                                                                            o
cuadro de texto, los items de un men´, o cualquier otro elemento que hace parte de la
                                        u
interfaz gr´fica de usuario.
           a
    Para crear un proyecto con interfaz gr´fica, hacemos click en File->New File or
                                             a
Project->Qt Widget Project->Qt Gui Application y navegamos a trav´s de los        e
cuadros de di´logo que se presentan a continuaci´n. N´tese, dentro de la carpeta Forms del
              a                                  o     o
proyecto creado, el archivo mainwindow.ui. Los archivos con extensi´n *.ui representan la
                                                                      o
especificaci´n de la interfaz de usuario y pueden ser editados gr´ficamente. Al hacer doble-
            o                                                   a
click sobre mainwindow.ui se habilita el modo de dise˜o (la pesta˜a Design) y podemos
                                                         n          n
entonces comenzar a agregar widgets a nuestra interfaz gr´fica.
                                                           a
    Para agregar un Widget, estos se arrastran desde la parte izquierda y se descargan
en la parte central (ventana). Agregue un dial, un lcdNumber y un pushButton, como se
muestra a continuaci´n.
                      o




                                            3
Compile y ejecute la aplicaci´n.
                                o

3.1.   Signals y Slots
    Las se˜ales (signals) y los slots se usan para la comunicaci´n entre objetos. Una se˜al
          n                                                     o                       n
se emite cuando un evento particular ocurre (por ejemplo, si se presiona un bot´n con
                                                                                    o
el mouse o se arrastra una barra de desplazamiento). Los Widgets de Qt tienen muchas
se˜ales predefinidas y el usuario tambi´n puede definir sus propias se˜ales.
  n                                      e                             n
    Un slot es una funci´n que es llamada en respuesta a una se˜al particular. Los slots
                         o                                         n
son funciones miembro comunes y corrientes, y los Widgets de Qt tambi´n tienen muchos
                                                                          e
definidos por defecto.
    El mecanismo de signals y slots garantiza que si se conecta una se˜al a un slot, la
                                                                           n
funci´n representada por el slot ser´ llamada con los par´metros de la se˜al en el momento
     o                               a                     a             n
indicado.
    La conexi´n entre signals y slots se puede realizar de manera gr´fica o mediante c´digo.
             o                                                      a                o
Para proceder gr´ficamente, realice la conexi´n de la se˜al valueChanged del dial con el
                  a                            o           n
slot display del lcdNumber, como lo ilustra la figura a continuaci´n:o




                                            4
Luego, asigne el nombre Reset para el pushButton, haga click derecho sobre este y
escoja la opci´n Go to slot..., luego seleccione la se˜al clicked().
              o                                       n




                                         5
Dentro del slot generado en el archivo mainwindow.cpp para la se˜al clicked() in-
                                                                    n
serte la l´
          ınea:

ui->lcdNumber->display(0);

Compile y ejecute la aplicaci´n y observe que sucede al mover el dial y presionar el bot´n.
                             o                                                          o

3.2.   Conexi´n mediante c´digo de signals y slots
             o            o
    Elimine la conexi´n realizada anteriormente de manera gr´fica y agregue las siguientes
                     o                                      a
l´
 ıneas al constructor de la clase MainWindow:
connect(ui->dial,            SIGNAL(valueChanged(int)),
        ui->lcdNumber,       SLOT(display(int)));
   Compile y ejecute de nuevo la aplicaci´n.
                                         o

3.3.   Agregando un di´logo a la interfaz gr´fica.
                      a                     a
    Una Ventana provee el espacio en pantalla sobre el cual se construye la interfaz gr´fica
                                                                                       a
principal, a menudo las ventanas tienen barras de men´ y de estado. En su parte central se
                                                       u
puede a˜adir cualquier tipo de Widget (QWidget). Las ventanas se construyen derivando
        n
la clase QMainWindow. Los Di´logos, son ventanas auxiliares que muestran informa-
                                   a
ci´n adicional o le presentan al usuario diversas preguntas y/o elecciones. Los di´logos se
  o                                                                                a
construyen derivando la clase QDialog y agregando a este los Widget necesarios.
    Para agregar un di´logo a nuestra aplicaci´n, hacemos click derecho en la carpeta
                        a                        o
Forms y seleccionamos Add New->Qt->Qt Designer Form Class->Dialog With-
out Buttons.
    Al hacer doble click sobre el archivo generado dialog.ui, se cambia al modo dise˜o.  n
Adicione una etiqueta label con el nombre calendario y un Widget tipo calendario al
di´logo.
  a




                                            6
3.4.    Creando un men´ en la ventana principal
                      u
   De regreso a la vista de dise˜o para la ventana principal (doble click sobre mainwindow.ui).
                                n
Localice la barra de men´ de la ventana y haga click en la etiqueta Type Here y reem-
                          u
place este nombre con File o Archivo. Cree en la pesta˜a del nuevo men´ File, la opci´n
                                                         n                  u            o
Calendar o Calendario.




    Ingrese las siguientes l´
                            ıneas de c´digo en el slot generado para la se˜al triggered()
                                      o                                   n
de la acci´n Calendario (recuerde incluir el archivo dialog.h en mainwindow.cpp):
          o

Dialog *MyDialog = new Dialog();
MyDialog->show();

   Compile y ejecute la aplicaci´n. ¿Que ocurrir´ sil el di´logo no se crea usando memoria
                                o               ıa         a
din´mica?.
   a

       Complete el ejemplo agregando una opci´n al men´ File que permita cerrar la
                                             o        u
       ventana principal.




                                             7
4.     Ejercicios
       Elabore un editor de texto plano, con un men´ que contenga una opci´n para limpiar
                                                   u                      o
       el texto escrito.

       Elabore una calculadora, con una interfaz gr´fica similar a la que se muestra en la
                                                   a
       figura a continuaci´n.
                         o




5.     Para la pr´xima pr´ctica.
                 o       a
     Leer la documentaci´n de las clases QImage, QPixmap y QFileDialog.
                        o




                                            8

Más contenido relacionado

La actualidad más candente

La actualidad más candente (17)

Componentes necesarios de android docx
Componentes necesarios de android  docxComponentes necesarios de android  docx
Componentes necesarios de android docx
 
GUIA DE LABORATORIO DE INSTALACION DEL FRAMEWORK GDX PARA EL DESARROLLO DE ...
GUIA DE  LABORATORIO DE  INSTALACION DEL FRAMEWORK GDX PARA EL DESARROLLO DE ...GUIA DE  LABORATORIO DE  INSTALACION DEL FRAMEWORK GDX PARA EL DESARROLLO DE ...
GUIA DE LABORATORIO DE INSTALACION DEL FRAMEWORK GDX PARA EL DESARROLLO DE ...
 
Desarrollo android - 4 - arquitectura de aplicación
Desarrollo android  - 4 - arquitectura de aplicaciónDesarrollo android  - 4 - arquitectura de aplicación
Desarrollo android - 4 - arquitectura de aplicación
 
Tutorial Android 1
Tutorial Android 1Tutorial Android 1
Tutorial Android 1
 
Android de la A a la Z PARTE 2 de 3 ulises gonzalez
Android de la A a la Z  PARTE 2 de 3 ulises gonzalezAndroid de la A a la Z  PARTE 2 de 3 ulises gonzalez
Android de la A a la Z PARTE 2 de 3 ulises gonzalez
 
Practica Uno Delphi
Practica Uno DelphiPractica Uno Delphi
Practica Uno Delphi
 
Entornos-de-Desarrollo-Eclipse-y-Android-SDK
Entornos-de-Desarrollo-Eclipse-y-Android-SDKEntornos-de-Desarrollo-Eclipse-y-Android-SDK
Entornos-de-Desarrollo-Eclipse-y-Android-SDK
 
Interfaces de usuario con PyGTK
Interfaces de usuario con PyGTKInterfaces de usuario con PyGTK
Interfaces de usuario con PyGTK
 
Introduccion a Windows Form
Introduccion a Windows FormIntroduccion a Windows Form
Introduccion a Windows Form
 
Curso Introducción a android
Curso Introducción a androidCurso Introducción a android
Curso Introducción a android
 
Swing
SwingSwing
Swing
 
Aprenda Visual Basic 6
Aprenda Visual Basic 6Aprenda Visual Basic 6
Aprenda Visual Basic 6
 
Tema6resumido
Tema6resumidoTema6resumido
Tema6resumido
 
Sesion12-componentes Visuales java
Sesion12-componentes Visuales javaSesion12-componentes Visuales java
Sesion12-componentes Visuales java
 
6. windows forms
6.  windows forms6.  windows forms
6. windows forms
 
Macros
MacrosMacros
Macros
 
Macros para combinar
Macros   para combinarMacros   para combinar
Macros para combinar
 

Similar a Practica5 (20)

Fundamentos de visual basic.
Fundamentos de visual basic.Fundamentos de visual basic.
Fundamentos de visual basic.
 
Manual de usuario (crea tv)
Manual de usuario (crea tv)Manual de usuario (crea tv)
Manual de usuario (crea tv)
 
Fundamentos de visual basic 6.0
Fundamentos de visual basic 6.0Fundamentos de visual basic 6.0
Fundamentos de visual basic 6.0
 
Aplicación Android Patito helpme
Aplicación Android Patito helpmeAplicación Android Patito helpme
Aplicación Android Patito helpme
 
Programacion 5%
Programacion 5%Programacion 5%
Programacion 5%
 
Visualbasic6.0
Visualbasic6.0Visualbasic6.0
Visualbasic6.0
 
37975756-Guia-de-C
37975756-Guia-de-C37975756-Guia-de-C
37975756-Guia-de-C
 
autocad 2D clase 1.pdf
autocad 2D  clase 1.pdfautocad 2D  clase 1.pdf
autocad 2D clase 1.pdf
 
Apuntes vb6
Apuntes vb6Apuntes vb6
Apuntes vb6
 
Visual basic 6.0
Visual basic 6.0Visual basic 6.0
Visual basic 6.0
 
VERUSKA SALA
VERUSKA SALAVERUSKA SALA
VERUSKA SALA
 
Guia practica 1.0 2011
Guia practica 1.0  2011Guia practica 1.0  2011
Guia practica 1.0 2011
 
Mobile Processing Introduccion
Mobile Processing IntroduccionMobile Processing Introduccion
Mobile Processing Introduccion
 
Qué es LabVIEW
Qué es LabVIEWQué es LabVIEW
Qué es LabVIEW
 
Roxana
RoxanaRoxana
Roxana
 
Exposicion
ExposicionExposicion
Exposicion
 
Fritzing
FritzingFritzing
Fritzing
 
Exposicion
ExposicionExposicion
Exposicion
 
Wink 2.0 Interamericana
Wink 2.0 InteramericanaWink 2.0 Interamericana
Wink 2.0 Interamericana
 
Kairubys rodriguez
Kairubys rodriguezKairubys rodriguez
Kairubys rodriguez
 

Último

Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuaDANNYISAACCARVAJALGA
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 

Último (20)

Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahua
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 

Practica5

  • 1. Laboratorio Inform´tica II: Pr´ctica 5 a a Felipe Lennis felipe.lennis@microe.udea.edu.co 26 de noviembre de 2012 Objetivos Realizar una introducci´n al framework Qt y al IDE Qt Creator para la construcci´n o o de interfaces gr´ficas de usuario. a Construir una interfaz gr´fica simple empleando los conceptos de signal y slot. a 1. Instalaci´n del QtSDK en Ubuntu Linux o Del sitio web www.developer.nokia.com/Develop/Qt/ descargar el QtSDK para Lin- ux de 32 o 64 bits, seg´n sea el caso. Los siguientes comandos instalan el SDK (Software u Developmente Kit), incluido el IDE (Integrated Development Environment) QtCreator en el directorio de usuario (home) y no en la ra´ del sistema. ız $ sudo apt-get install cmake mesa-common-dev freeglut3-dev $ sudo apt-get install binutils-gold $ chmod +x QtSdk-offline-linux-x86-v1.2.1.run $ ./QtSdk-offline-linux-x86-v1.2.1.run -style cleanlooks 2. Introducci´n al Qt Creator o Qt Creator permite la edici´n de c´digo en C++ y el dise˜o de interfaces gr´ficas o o n a de usuario. Adem´s es posible hacer debug, compilar y ejecutar las aplicaciones desde el a mismo entorno de desarrollo (IDE). 1
  • 2. Para crear nuestra primera aplicaci´n, hacemos click en File->New File or Project- o >Other Project->Qt Console Application, lo que inicializa una aplicaci´n para con- o sola sin elementos gr´ficos para la interfaz de usuario. En la pesta˜a Edit, editamos el a n archivo main.cpp de la siguiente manera: 2
  • 3. Qt posee un gran n´mero de clases, debido a esto es fundamental hacer uso de la u documentaci´n, que se encuentra disponible mediante la pesta˜a Help. o n 3. Creando una Interfaz Grafica de Usuario (GUI) Qu´ es un Widget? Un Widget es un componente visual, por ejemplo, un bot´n, un e o cuadro de texto, los items de un men´, o cualquier otro elemento que hace parte de la u interfaz gr´fica de usuario. a Para crear un proyecto con interfaz gr´fica, hacemos click en File->New File or a Project->Qt Widget Project->Qt Gui Application y navegamos a trav´s de los e cuadros de di´logo que se presentan a continuaci´n. N´tese, dentro de la carpeta Forms del a o o proyecto creado, el archivo mainwindow.ui. Los archivos con extensi´n *.ui representan la o especificaci´n de la interfaz de usuario y pueden ser editados gr´ficamente. Al hacer doble- o a click sobre mainwindow.ui se habilita el modo de dise˜o (la pesta˜a Design) y podemos n n entonces comenzar a agregar widgets a nuestra interfaz gr´fica. a Para agregar un Widget, estos se arrastran desde la parte izquierda y se descargan en la parte central (ventana). Agregue un dial, un lcdNumber y un pushButton, como se muestra a continuaci´n. o 3
  • 4. Compile y ejecute la aplicaci´n. o 3.1. Signals y Slots Las se˜ales (signals) y los slots se usan para la comunicaci´n entre objetos. Una se˜al n o n se emite cuando un evento particular ocurre (por ejemplo, si se presiona un bot´n con o el mouse o se arrastra una barra de desplazamiento). Los Widgets de Qt tienen muchas se˜ales predefinidas y el usuario tambi´n puede definir sus propias se˜ales. n e n Un slot es una funci´n que es llamada en respuesta a una se˜al particular. Los slots o n son funciones miembro comunes y corrientes, y los Widgets de Qt tambi´n tienen muchos e definidos por defecto. El mecanismo de signals y slots garantiza que si se conecta una se˜al a un slot, la n funci´n representada por el slot ser´ llamada con los par´metros de la se˜al en el momento o a a n indicado. La conexi´n entre signals y slots se puede realizar de manera gr´fica o mediante c´digo. o a o Para proceder gr´ficamente, realice la conexi´n de la se˜al valueChanged del dial con el a o n slot display del lcdNumber, como lo ilustra la figura a continuaci´n:o 4
  • 5. Luego, asigne el nombre Reset para el pushButton, haga click derecho sobre este y escoja la opci´n Go to slot..., luego seleccione la se˜al clicked(). o n 5
  • 6. Dentro del slot generado en el archivo mainwindow.cpp para la se˜al clicked() in- n serte la l´ ınea: ui->lcdNumber->display(0); Compile y ejecute la aplicaci´n y observe que sucede al mover el dial y presionar el bot´n. o o 3.2. Conexi´n mediante c´digo de signals y slots o o Elimine la conexi´n realizada anteriormente de manera gr´fica y agregue las siguientes o a l´ ıneas al constructor de la clase MainWindow: connect(ui->dial, SIGNAL(valueChanged(int)), ui->lcdNumber, SLOT(display(int))); Compile y ejecute de nuevo la aplicaci´n. o 3.3. Agregando un di´logo a la interfaz gr´fica. a a Una Ventana provee el espacio en pantalla sobre el cual se construye la interfaz gr´fica a principal, a menudo las ventanas tienen barras de men´ y de estado. En su parte central se u puede a˜adir cualquier tipo de Widget (QWidget). Las ventanas se construyen derivando n la clase QMainWindow. Los Di´logos, son ventanas auxiliares que muestran informa- a ci´n adicional o le presentan al usuario diversas preguntas y/o elecciones. Los di´logos se o a construyen derivando la clase QDialog y agregando a este los Widget necesarios. Para agregar un di´logo a nuestra aplicaci´n, hacemos click derecho en la carpeta a o Forms y seleccionamos Add New->Qt->Qt Designer Form Class->Dialog With- out Buttons. Al hacer doble click sobre el archivo generado dialog.ui, se cambia al modo dise˜o. n Adicione una etiqueta label con el nombre calendario y un Widget tipo calendario al di´logo. a 6
  • 7. 3.4. Creando un men´ en la ventana principal u De regreso a la vista de dise˜o para la ventana principal (doble click sobre mainwindow.ui). n Localice la barra de men´ de la ventana y haga click en la etiqueta Type Here y reem- u place este nombre con File o Archivo. Cree en la pesta˜a del nuevo men´ File, la opci´n n u o Calendar o Calendario. Ingrese las siguientes l´ ıneas de c´digo en el slot generado para la se˜al triggered() o n de la acci´n Calendario (recuerde incluir el archivo dialog.h en mainwindow.cpp): o Dialog *MyDialog = new Dialog(); MyDialog->show(); Compile y ejecute la aplicaci´n. ¿Que ocurrir´ sil el di´logo no se crea usando memoria o ıa a din´mica?. a Complete el ejemplo agregando una opci´n al men´ File que permita cerrar la o u ventana principal. 7
  • 8. 4. Ejercicios Elabore un editor de texto plano, con un men´ que contenga una opci´n para limpiar u o el texto escrito. Elabore una calculadora, con una interfaz gr´fica similar a la que se muestra en la a figura a continuaci´n. o 5. Para la pr´xima pr´ctica. o a Leer la documentaci´n de las clases QImage, QPixmap y QFileDialog. o 8