domingo, 11 de noviembre de 2012

Windows & Dialog



















Procedimiento para crear una ventana de dialogo que bloquea la ventana principal o convive con ella.
  • Crear nuevo proyecto GUI y editar el menú desplegable poniendo File y en su primer elemento New Window
  • En actions  click derecho  y añadir con Go to Slot la opción triggered()
  • Esto añade a mainwindow.cpp el siguiente código : 
void MainWindow::on_actionNew_Window_triggered()
{
    
}

  • Arrastramos un PlainTextEdit (editor de texto) al formulario
  • En mainwindows.cpp añadimos la linea en negrita, para que el plainTexEdit se eexpanda a toda la ventana.
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    setCentralWidget(ui->plainTextEdit);
}
  • En el minuto 4 del vídeo se añade una ventana de dialogo.
  • En el inicio del árbol del proyecto, click derecho Add New... , Files and Classes : Qt , Qt Designer Form Classm, Next, Dialog without Buttons, Nombre : MyDialog, 
Para poder llamar este ventana de dialogo desde la ventana principal, añadimos en la parte superior de mainwindow.cpp la línea en negrita : 
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "mydialog.h"
En la parte inferior de mainwindow.cpp. añadimos las líneas en negrita.
void MainWindow::on_actionNew_Window_triggered()
{
    MyDialog mDialog;
    mDialog.setModal(true);
    mDialog.exec();
}
Esto crea una ventana de dialogo modal, que toma el foco y no lo suelta.

Para que no sea modal, no basta con poner false,  hay que hacer que la ventana de dialogo sea hija de la ventana principal :

Al principio de mainwindows.h añadir el código en negrita : 
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "mydialog.h"

Al final de mainwindows.h añadir el código en negrita : 
private:
    Ui::MainWindow *ui;
    MyDialog *mDialog;
};

Al principio de mainwindows.cpp añadir el código en negrita : 
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "mydialog.h"

Al final de mainwindows.cpp añadir el código en negrita : 
void MainWindow::on_actionNew_Window_triggered()
{
    mDialog = new MyDialog(this);
    mDialog->show();
}




sábado, 10 de noviembre de 2012

GUI : Signals & Slots

File / New Project / Qt Gui Application


Name: GUI, next, next, next, finish.


Abrir el formulario mainwindows.ui y añadir un control Push Button.


Editar mainwindow.cpp, añadir la linea selecciona en azul :

 ui->pushButton->setText("Close");
Esto modifica el texto que aparece sobre el botón.


Editar mainwindow.ui, y pulsar F4 para editar la correspondencia Signal/Slot


en pushButton seleccinar clicked(), activar Show signals and slots inherited from QWidget
en MainWindow seleccionar close()
pulsar OK

Esto añade un evento al hacer click sobre el boton "Close" para que cierre la ventana y termine el programa.

Dar al triangulo verde (RUN) o pulsar Ctrl+R para compilar y ejecutar el programa.


Añadir un Horizontal Slider y un Progress Bar, seleccionar ambos y crear Lay Our Vertically ó Ctrl+L


Pulsar F4 (Signlas & Slot) y seleccionar arrastrando del Horizontal Slider al Progress Bar.
Asociar valueChanged(int) a setValue(int)



Se puede hacer lo mismo con el siguiente código en mainwindow.cpp :
connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),
            ui->progressBar,SLOT(setValue(int)));

Usar disconect para desconectar un Signal & Slot creado por código.



viernes, 9 de noviembre de 2012

Hola Mundo


Creación de la clásica primer aplicación : 

En Qt creator :

  • File/New Project , Applications , Qt Console Application
  • Name: Hola ... Finish

Introducción a Qt


Definición
¿Qué es Qt?  ¿Qué lenguaje de programación utiliza Qt?
Qt es un framework multiplataforma, que se utiliza para el desarrollo de aplicaciones, está escrito en C++, sin embargo, es posible utilizar Qt con otros lenguajes a través de bindings. Existen bindings de Qt para lenguajes como C#, PHP, Python, y Ruby, entre otros.
En un principio, Qt sólo ofrecía bibliotecas de código para la creación de interfaces gráficas de usuario. Ahora existen bibliotecas para muchas cosas más, como: Bases de datos, XML, multimedia, comunicación en red, OpenGL, etc.
Qt extiende el lenguaje C++, a través de macros y meta información, mientras se mantiene apegado a él. Algunas características que agrega Qt a C++ son: Bucle foreach, sentencia forever e introspección.


El Nombre
¿Cómo se pronuncia Qt? ¿Qué significa Qt?
Qt se pronuncia como la palabra del idioma inglés "cute" que en español se escucharía como "quiut" o "kiut". Puedesescuchar la pronunciación en Google Translate.
El nombre de Qt tiene su origen en el primer nombre de la compañia que lo creó: Quasar Technologies. El nombre de Qt, significaba Quasar Technologies toolkit.
Esta compañía después cambiaría de nombre a Troll Tech y finalmente a Trolltech.


Historia de Qt
¿Quién creo Qt? ¿Cuándo se creo Qt?
El desarrollo de Qt comenzó en el año 1991 gracias a Haavard Nord y Eirik Chambe-Eng, la versión original estaba disponible para Windows y X11.
En 1994 se forma la compañia Trolltech, primero bajo el nombre de Quasar Technologies, y después Troll Tech.
En 1996 comenzó el desarrollo del mayor proyecto basado en Qt: El entorno de escritorio KDE.
En 2001 se añadió soporte para Mac OS X.
En 2005, Qt fue liberado bajo licencia GPL en todas las plataformas.
En 2008 Nokia adquirió Trolltech.
En 2009 se agregó soporte para la plataforma S60, ofreciendo un mercado de millones de clientes para desarrolladores que utilizan Qt y proporcionando una excelente herramienta para los desarrolladores de aplicaciones para dispositivos móviles.


Propósito de Qt
¿Para qué sirve Qt? ¿Qué puedo hacer con Qt?
El propósito de Qt es permitir a los desarrolladores construir aplicaciones multiplataforma a partir de una misma base de código de manera rápida y sencilla. Una aplicación Qt, es una aplicación nativa, por la tanto se ve y se siente como tal.
Qt provee un API sencilla y divertida de utilizar, permite que los desarrolladores tengan una alta productividad y ofrece herramientas potentes y sencillas.


Diseño, composición o arquitectura
¿Cómo está formado Qt? ¿Cuáles son los componentes de Qt?
Qt está compuesto por una serie de módulos que proveen funcionalidad específica a través de una biblioteca de clases multiplataforma. Aunque también existen algunos módulos específicos para cada plataforma, por ejemplo, QtDBUS para comunicación entre procesos, exclusiva de Unix o QtAxContainer y QtAxServer para construir y utilizar componentes ActiveX, exclusiva de Windows.
Algunos de los módulos que forman Qt son:
  • Bases de Datos - Qt SQL
  • Core - Qt Core
  • Comunicación en red - Qt Network
  • Interfaz Gráfica de usuario - Qt GUI
  • Multimedia - Phonon,  Qt Multimedia
  • Quick - Qt Declarative, QML
  • Webkit - Qt Webkit
  • XML - Qt XML
En el sitio oficial de Qt podemos encontrar una lista completa de los módulos que lo forman.
Qt también provee poderosas herramientas de desarrollo, entre ellas destaca un completo entorno de desarrollo, llamado Qt Creator, que incluye un editor de texto con autocompletado, diseñador de interfaces gráficas, gestión de proyectos, sistema de depuración, integración con sistemas de control de versiones y muchas más características.


Qt en la industria
¿Quién utiliza Qt? ¿Dónde se utiliza Qt?
Qt se utiliza en una amplia variedad de dispositivos, algunos de ellos son: Computadoras de escritorio, teléfonos celulares, lectores electrónicos, impresoras, máquinas de café, computadoras de automóvil, etc. Proximamente estará presente aún en más dispositivos, principalmente computadoras móviles y tablets, gracias a que será el principal framework de desarrollo para el nuevo sistema operativo MeeGo.
Algunas compañias de renombre que han utilizado Qt son: Google, HP, Samsung y Asus.
Algunas aplicaciones conocidas que utilizan Qt son: El entorno de escritorio KDE y toda su suite de aplicaciones (mensajero instantáneo Kopete, suite de oficina KOffice, navegador web Konqueror, y un larguísimo etcétera) La aplicación de llamadas Voz Sobre IP Skype, Google Maps, El reproductor multimedia VLC y la herramienta de modelado Maya.


Licenciamiento
¿Cuánto cuesta Qt? ¿Puedo crear aplicaciones comerciales con Qt?
Qt está disponible bajo 3 diferentes licencias:
  • GPL Aplicación de código abierto, los cambios realizados al código fuente de Qt deben ser compartidos con la comunidad.
  • LGPL Es posible crear aplicaciones de código cerrado, los cambios realizados al código fuente de Qt deben ser compartidos con la comunidad.
  • Comercial Es posible crear aplicaciones de código cerrado, los cambios realizados al código fuente de Qt pueden mantenerse cerrados.


Prerrequisitos
¿Qué necesito saber para utilizar Qt?
Lo ideal sería tener buenos conocimientos sobre C++, el lenguaje en el que está hecho Qt, aunque tener conocimiento de algún lenguaje de programación orientado a objetos es suficiente. Intentar aprender Qt sin tener estos conocimientos es difícil y nada recomendable ya que Qt, al ser un framework y no un lenguaje, no provee elementos básicos de programación como estructuras de control o tipos de datos básicos. Estos elementos se encuentran en cualquier programa y, naturalmente, se utilizan en todos los ejemplos de Qt que podamos encontrar.

Conceptos básicos

C++: es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitan la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido. Posteriormente se añadieron facilidades de programación genérica, que se sumó a los otros dos paradigmas que ya estaban admitidos (programación estructurada y la programación orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma.

Qt: es una biblioteca multiplataforma ampliamente usada para desarrollar aplicaciones con una interfaz gráfica de usuario así como también para el desarrollo de programas sin interfaz gráfica como herramientas para la línea de comandos y consolas para servidores. Qt utiliza el lenguaje de programación C++ de forma nativa, adicionalmente puede ser utilizado en varios otros lenguajes de programación a través de bindings. También es usada en sistemas informáticos empotrados para automoción, aeronavegación y aparatos domésticos como frigoríficos. Funciona en todas las principales plataformas, y tiene un amplio apoyo. El API de la biblioteca cuenta con métodos para acceder a bases de datos mediante SQL, así como uso de XML, gestión de hilos, soporte de red, una API multiplataforma unificada para la manipulación de archivos y una multitud de otros para el manejo de ficheros, además de estructuras de datos tradicionales. Distribuida bajo los términos de GNU Lesser General Public License (y otras), Qt es software libre y de código abierto.

Compilador: es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de máquina, pero también puede ser un código intermedio (bytecode), o simplemente texto. Este proceso de traducción se conoce como compilación. Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de máquina). De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora.

Depurador (en inglés, debugger): es un programa usado para probar y depurar (eliminar los errores) de otros programas (el programa "objetivo").

IDE (entorno de desarrollo integrado): es un programa informático compuesto por un conjunto de herramientas de programación. Un IDE es un entorno de programación que ha sido empaquetado como un programa de aplicación, es decir, consiste en un editor de código, un compilador, un depurador y un constructor de interfaz gráfica (GUI).

Biblioteca: es un conjunto de subprogramas utilizados para desarrollar software. Las bibliotecas contienen código y datos, que proporcionan servicios a programas independientes, es decir, pasan a formar parte de estos. Esto permite que el código y los datos se compartan y puedan modificarse de forma modular. Algunos programas ejecutables pueden ser a la vez programas independientes y bibliotecas, pero la mayoría de estas no son ejecutables. Ejecutables y bibliotecas hacen referencias (llamadas enlaces) entre sí a través de un proceso conocido como enlace, que por lo general es realizado por un software denominado enlazador.

Configuración


En el post anterior aprendimos como instalar las Librerias Qt y Qt Creator, ahora lo que haremos es configurar Qt Creator para que este pueda compilar los programas que haremos en este IDE.

Descargamos este otro archivo.

MinGW

Una ves terminado de descargarse, debemos de descomprimir el archivo *.zip. Este creara la carpeta mingw. Ahora moveremos esta carpeta a C:\Qt ya que ahi es donde se instalo Qt.

Configuracion para la Compilacion


Abrimos Qt Creator.

Una veas abierto nos vamos a la barra de menu click en Tool -> Options... -> Build & Run.

Hacemos click al boton Add -> MingGW. En la parte de abajo donde dice Compiler Path debemos escribimosC:\Qt\mingw\bin\g++.exe y en Debugger: C:\Qt\mingw\bin\gdb.exe. Esas son las rutas donde se encuentran el compilador y degugger respectivamente, Nota: en su caso puede ser diferente.



En la pestaña Unconfigured Project, en Qt Version debe de estar Qt 4.8.2 y Tool Chain: MingGW.
Nota: en su caso puede ser diferente.


Aplicamos los cambios haciendo click al boton Ok.

Dependencias


Por problemas de dependencias les aparecera este error. A que se debe, para que el programa funcione necesita de algunos archivos *.dll, (si lo quieren usar en otra computadora que no tiene instalado Qt es necesario estos archivos). Estos se encuentran en:

C:\Qt\mingw\bin
  • mingwm10.dll
  • libgcc_s_dw2-1.dll

C:\Qt\4.8.2\bin
  • QtCore4.dll
  • QtGui4.dll

Ahora el programa se podra ejecutar y usar en otras computadoras. Nota: Si le agregan mas funcionalidad al programa puede que sea necesario mas archivos. No copien los archivos que termine con una d, ya que estos son archivos del debugger y consumen mucho espacio.

Agregar Qt al Path de Windows


Qt Creator ejecutara el programa correctamente desde el propio IDE, pero si lo que queremos es  ejecutarlo desde el explorador de windows marcara error de dependencias. Para solucionar este problema debemos de agregar Qt al path de windows.

Le damos un clic al icono de Windows y seleccionamos Equipo -> Propiedades del Sistema. Despues hacemos clic donde dice Configuracion Avanzada del Sistema, en la pestana Opciones Avanzadas le damos clic al botonVariables del Entorno. Se abrira una nueva ventana y buscamos (en la parte de abajo) Path, lo seleccionamos haciendo doble clic y en Valor de la variable al final agregamos:

C:\Qt\mingw\bin;C:\Qt\4.8.2\bin;

Aceptamos los cambios. Y ejecutamos nuevamente el programa y veran que el programa se ejecuto perfectamente.

Errores


Si les aparece este error:

Error while building project ProjectName (target: Desktop)
When executing build step ‘qmake’




Hagan lo siguiente: En la barra (que se muestra en la imagen) hacemos click a Projects. en la pestaña Build Settings -> Edit build configuration. Hacemos click al boton Add... y seleccionamos (e.g. Qt 4.8.0 for Desktop – MinGW (Qt SDK) Release). Ahora procederemos a compilar nuevamente el programa.

Instalación


Una vez leido los conceptos basicos es hora de continuar con la instalacion de Qt.

Qt se encuentra disponible para los sistemas operativos Windows, Gnu/Linux y Mac OsX. En este post explicare cual es el proceso de instalacion en windows, hay que tener claro que no se va a instalar Qt SDK, si no los archivos por separado.

Ingresamos a esta pagina http://qt-project.org/downloads#qt-lib  en el cual debemos de descargar 2 archivos:

Qt libraries 4.8.2 for Windows (minGW 4.4, 318 MB)
Qt Creator 2.5.0 for Windows (30 MB)

Nota: Los ejecutables que dicen Qt libraries 4.8.2 for Windows (VS 2008, 234 MB) y Qt libraries 4.8.2 for Windows (VS 2010, 234 MB) son para usarse con el IDE Visual Studio 2008 y 2010, estos no funcionan con Express edition o eso creo).


Una ves descargado procederemos a instalar  qt-win-opensources-4.8.2-mingw, hacien doble click en el ejecutable.


Debemos de esperar un rato para que se complete ese proceso.


Esta es la pantalla de bienveniada para comenzar con la instalacion de las Librerias de Qt. click en Next.


Aqui nos muestra 2 enlaces, una del enlace para descargar Qt y la otra el enlace sobre las distintas licencias de Qt. click en Next.


Debemos de aceptar el acuerdo de licencia para poder continaur con la instalacion. click en Next.


Aqui nos esta mostrando los componentes que se van a instalar (no es muy importante). click en Next.


Esta ventana nos muestra en donde se va a instalar Qt. click en Next.


Aqui nos esta mostrando el nombre que tendra Qt despues de la instalacion en el menu de inicio, yo decidi cambiarlo por Qt SDK para localizarlo mas facilmente. click en Next.



Pues aqui nos esta diciendo la ruta donde se va a instalar el compilador MingGW, el cual no se instalara y nos marcara un error (no se porque), pero hagan click al boton Si para continuar.


Esta ventana nos muestra el proceso de instalacion de las Librerias de Qt, tomara un rato dependiendo de que tan potente sea su computadora.


Aqui nos esta mostrando que la instalacion a terminado con exito, yo les recomiendo que desactiven las casillas. click en Finish.

Ahora procederemos con la instalacion de Qt Creator. hacemos doble click al ejecutable llamado qt-creator-win-opensource-2.5.0.


Debemos de esperar a que este proceso termine.


Esta es la pantalla de bienvenida para instalar Qt Creator 2.5.0. click en Next.


Aceptamos el acuerdo de licencia para continuar con la instalacion. click en Next.


Aqui nos muestra 2 enlaces donde se puede descargar el debugger (no le den mucha importancia, mas adelante sabran porque). click en Next.


Estos son los componentes que se van a instalar (tampoco le den mucha omprotancia). click en Next.


Esta es la ruta donde se va a instalar Qt Creator. click en Next.


Este es el nombre que llevara para localizarlo en el menu inicio. click en Next.


En esta ventana nos mostrara el proceso de instalacion de Qt Creator.


Aqui nos esta mostrando que la instalacion a terminado con exito, si dejamos activada la casilla Qt Creator se abrira despues de hacer click en Finish.

Si todo salio bien como explique en este tutorial las librerias Qt y Qt Creator ya se ecnuentran instaladas. En la imagen de abajo es Qt Creator ejecutandose xD.