Capítulo 4. Extendiendo la Funcionabilidad Mediante Acciones

El fichero .ui.h

El widget principal del proyecto myeditor corresponde a una instancia de una clase derivada de la clase QMainWindow. Por ende, para extender su funcionabilidad, en principio bastaria con definir los metodos necesarios e implementarlos. Esto iria bien salvo por un detalle tenaz (que Jean Pierre ya debio explicar): los cambios efectuados en los ficheros correspondientes se perderian cada vez que modificaramos la forma con el designer (sin importar que diminuta resulte la modificacion efectuada). Existen dos aproximaciones para solucionar el inconveniente:

La primera es conceptual (c++): se trata de heredar de la forma creada mediante el designer (correspondiente a los ficheros en rojo de la figura) y extender la funcionalidad en la clase heredada (cualquier fichero en amarillo de la figura se encuentra disponible para edicion del usuario). De este modo, cada vez que modifiquemos la forma mediante el designer y por ende los ficheros en rojo, los cambios no afectaran la nueva clase heredada: sencillo, directo y elagante, aha, como les gusta a ellas.

fichuero .ui.h: 1

La segunda es mediante un mecanismo propio del designer: la form.ui.h. Veamos, la form.ui.h corresponde a un fichero que se puede editar directamente por el usuario (amarillo en la figura), pero que tambien se puede modificar visualmente mediante el designer (que ademas de todo se encarga de mantener el “sincronismo”). De esta manera, encontramos el “lugar” para extender la funcionalidad de la forma, sin perder los cambios que se efectuen de modo visual y sin la necesidad de tener que emplear el mecanismo de herencias de c++ propio de la primera alternativa. Graficamente lo que se tiene es lo siguiente:

fichuero .ui.h: 2

Invocando una salida

Como nuestra aplicacion no realiza nada util aun, le vamos a agregar cierta funcionabilidad mediante la implementacion de ciertas acciones. Para ello vamos a emplear la segunda aproximacion de las citadas arriba: vamos a crear y editar el archivo myeditor.ui.h. Si picamos dos veces la forma principal, aparece el siguiente dialogo, respondamos “Yes”:

doble click la forma para crear el ui.h

Aparece la myeditor.ui.h en el editor de textos de Qt:

resultado de crear la forma ui.h

Vamos a editar el codigo relativo a la accion File->Close de nuestra aplicacion. Para ello, ubiquemos la seccion del fichero correspondiente al SLOT fileExit() y editemoslo mediante el codigo this->close();. Observacion: quizas puedas observar cuando termine de escribir “->” como se despliega un menu contextual. Este menu posee todas las funciones disponibles para el objeto this (QMainWindow), incluidas las heredadas mediante el menanismo de inheritance (te suena “code completion”?).

editando fileExit(): resultado

Antes de proseguir al siguiente capitulo, salvemos, compilemos y ejecutemos la aplicacion (en ese orden) para ver que pasa (ya lo sabes hacer).