2009-01-26

Crear aplicaciones Qt en Windows usando Microsoft Visual C++ 2008

Hola, para los que no saben que es Qt se trata de una API multiplataforma para crear aplicaciones nativas en Windows, Linux, mac, Solaris, etc y poder portarlas sin cambiar ninguna línea de código. Si quieren ver más información sobre este paquete pueden visitar: http://www.qtsoftware.com/

Yo ya había escrito dos posts en este mismo blog sobre Qt y como instalarlo en Linux, si quieren darles un vistazo:

El remplazo de Visual Basic
Instalar Qt4

La verdad es que había estado intentando hacer correr este paquete en Windows pero hasta ahora no había podido, traté con DevC++ y con Eclipse pero nada, quien pensaría que la solución era un producto de Microsoft.

Recientemente Microsoft liberó las versiones Express del Visual Studio 2008 que se pueden descargar gratuitamente. Con este producto podemos compilar el Qt y también crear nuestras propias aplicaciones. En este post explicaré como hacerlo.

Obviamente lo primero es descar e instalar el Visual C++ 2008 Express Edition, una vez instalado (pesa como 150 MB) debemos descargar la versión de Código Fuente de Qt4 para Windows de la página de Qt Software. Ojo, no descargen la versión que viene con el MinGW sino la que es solo código fuente. La descarga pesa como 120 MB, es un archivo comprimido.

Descargamos el archivo y lo descomprimimos en C:\Qt\4.4.3 [EL NOMBRE DE LA CARPETA NO DEBE CONTENER ESPACIOS] (la 4.4.3 fue la versión que yo bajé pero puede que para el momento en que lean este post sea una más reciente). En esa carpeta queda un archivo que se llama configure.exe este es el autconf del builder, hay que ejecutarlo PERO NO SE PRECIPITEN, LEAN ABAJO.

Vamos a Inicio -> Todos los Programas -> Microsoft Visual C++ 2008 Express Edition -> Visual Studio Tools -> Símbolo del Sistema de Visual Studio 2008, esto nos abre una consola en el directorio del Visual C++ y habilita los paths para el maker, y el linker.

En esta consola nos vamos a C:\Qt\4.4.3\ (o el directorio donde hayan descomprimido el qt), una vez allí ejecutamos:

C:\Qt\4.4.3\>configure -platform win32-msvc2008

Este comando prepara el código para que se pueda compilar con el compilador de Microsoft Visual Studio 2008, una vez temine el proceso veremos un mensaje como este:

Qt is now configured for building. Just run nmake.
To reconfigure, run nmake confclean and configure.

Entonces simplemente hacemos lo que dice ahi, ejecutamos nmake para que Visual C++ empiece a compilar. Este proceso tarde un rato, igual que en Linux, la consola va a estar compilando durante un tiempo creando los ejecutables de Qt Designer, Qt Assistant, el moc, etc y las dll de Qt, cuando el proceso termina Qt esta compilado e instalado en el equipo listo para usarse.

Ahora vamos a ver como crear un programita en Qt usando el Visual C++, vamos a crear el Hello World del tutorial de Qt. Pero primero hay algo adicional que debemos hacer y es agregar la carpeta bin de Qt al Path del Sistema:

Damos clic en Inicio y luego clic derecho en Mi PC, ahi vamos a Propiedades y en la pestaña de Opciones Avazadas le damos clic en Variables de Entorno, aparece un cuadro de diálogo con las variables de sistema y las variables de usuario, en las variables de sistema buscamos la variable Path, la seleccionamos y damos clic en Modificar. Al final del texto colocamos un ; (punto y coma) y despues escribimos la ruta del bin de Qt, que en mi caso era C:\Qt\4.4.3\bin y damos clic en Aceptar en todos los cuadros de diálogo.

Ahora si vamos a crear el Hello World.

Abrimos el Visual C++ 2008 y cremos un Nuevo Proyecto, en donde dice Tipo de proyecto seleccionamos Visual C++ -> General -> Proyecto de archivos MAKE. Seleccionamos la ubicación y el nombre del proyecto que en este caso será Hello World. Retiramos la marca de la casilla Crear directorio para la solución y damos clic en Aceptar.

Visual Studio nos abre un asistente para configuración del proyecto de archivos MAKE, vamos a ignorarlo y daremos clic simplemente en Finalizar. Se creará el proyecto y apareceran las carpetas y archivos usuales del Visual C++ (crea un montón de basura).

Vamos a crear el main, entonces, en el Explorador de Soluciones, en la carpeta Archivos de código fuente damos clic derecho y ahi seleccionamos Agregar -> Nuevo Elemento y escojemos Archivo C++ (.cpp), le damos el nombre main y hacemos clic en Aceptar.

El Visual Studio nos abre un editor de código, ahi vamos a escribir el código que está en el Qt Assistant, en el tutorial de Hello World que es este:

#include <QApplication>
#include <QPushButton>

int main(int argc, char *argv[])
{
QApplication app(argc, argv);

QPushButton hello("Hello world!");

hello.show();
return app.exec();
}

Le damos en Guardar y ya estara listo el proyecto, ahora vienen las malas noticias, no podemos compilar desde el IDE (o por lo menos yo no he podido por que hay que configurarlo y yo no me he puesto en esas) así que vamos a compilar por consola:

Abrimos otra vez el Símbolo del Sistema de Visual Studio 2008 que abrimos para compilar el Qt. En esa consola vamos a la carpeta donde hemos guardado el proyecto de Visual C++ y allí escribimos estos comandos:

qmake -project
qmake
nmake

Esto compila el programa y genera el ejecutable en la carpeta Debug, en mi caso Hello World.exe. Desde la misma consola o desde un explorador de Windows podemos ejecutar la aplicación para constatar que funciona.



Bien, ya hemos creado y ejecutado una aplicación en Windows con Qt. Si corre el Hello world corre cualquier cosa. :)

No duden en dejar sus comentarios, dudas o preguntas.

Se cuidan Bye Bye.

23 comentarios:

Jorge Martínez dijo...

Compilado Hello Word con lo del bat que explica mas adelante :D

Elena dijo...

Hola:
Soy novata en esto, y necesito compilar un proyecto C++ para que me cree las librerías y ficheros necesarios para ejecutarlo en Windows, Linux y Mac.
¿Sabéis como puedo hacerlo? Gracias.

Elena dijo...

Hola:
Soy novata en esto, y necesito compilar un proyecto C++ para que me cree las librerías y ficheros necesarios para ejecutarlo en Windows, Linux y Mac.
¿Sabéis como puedo hacerlo? Gracias.

Sergio dijo...

Hola Elena, quise escribirte al correo electrónico pero no está en tu perfil.

Bueno, te cuento, Qt 4 es una librería multiplataforma, quiere decir que si haces un programa en Qt ese mismo programa (sin cambiar una sola línea de código) lo puedes compilar en Windows, Linux y Mac, pero hay que aclarar que esto no significa que un ejecutable que compiles en Windows va a funcionar en Linux o en Mac, los ejecutables deben ser generados en su plataforma respectiva. Lo que compiles en Linux funciona solo en Linux (y bueno probablemente en otros sistemas tipo Unix), Lo que compiles en Windows funciona solo en Windows y lo que compiles en Mac funciona solo en Mac, pero el código fuente si es el mismo para todos los sistemas.

Si quieres más info escribeme a sergio.bobillier@gmail.com y yo con mucho gusto te ayudo :)

Elena dijo...

Hola:
Vale, intentaré compilar cada sistema por su lado. De primeras no voy a modificar el código fuente, por lo que por ese lado no habría problemas. ¿Cómo funciona en Linux?
Gracias.

Omar P. dijo...

Hola..

Tengo una duda respecto a las librerias QT, puedo instalarlas en otra particion que nos sea C:?

Sergio dijo...

Si Oscar, es correcto, puedes instalar las librerías donde quieras, lo único que debes tener en cuenta es que la ruta de acceso no debe contener espacios y por supuesto colocar esa ubicación en el momento de agregar la ruta donde instalaste Qt al path del sistema.

Omar P. dijo...

Hola Sergio.

Ya realice la instalacion de las librerias QT y su configuracion, el ejemplo de Hello World lo compilo sin ningun problema. pero aqui viene mi duda...

Compile un ejercicio que habian dejado en clase y el proceso no muestra ningun error y crea el debug con el ejecutable, pero cuando intento correrlo por consola no pasa nada. a que se puede deber esto... aclaro que es un programa basico que corre por consola, no tiene GUI

Sergio dijo...

Hola Oscar. Pues para poder responder tu pregunta tendría que ver el código, al menos la función main. Si quieres puedes escribirme a mi correo electrónico sergio.bobillier@gmail.com o agregarme al MSN sergiobobillier@hotmail.com y con gusto te ayudaré.

pochetina dijo...

hola!
muchas gracias por este tutorial, es genial 8D

¿Hay alguna manera de poder compilar y ejecutar desde Visual Studio?

¿Y algún modo de que no se cree el ejecutable en /Debug?

gracias!!!

Sergio dijo...

Hola Pochetina, la respuesta a tu pregunta es si, hay una forma para poder compilar desde el Visual C++. Acá mismo en el blog dejé el tutorial para hacerlo:

http://sergiobobillier.blogspot.com/2009/01/crear-aplicaciones-qt-en-windows-usando_27.html

Respecto a que el ejecutable no quede en debug creo que lo mejor es editar el .pro. En el .pro hay una variable llamada TARGET. Se podría poner por ejemplo:

TARGET = miPrograma

Lo que creo generaría un archivo miPrograma.exe en la carpeta del proyecto aunque no estoy totalmente seguro.

En el momento no me encuentro en una estación de trabajo Windows para probarlo, cuando llegue a casa lo probaré y editaré la entrada.

pochetina dijo...

muuuuchas gracias :))

manuel dijo...

Muy buen Material

Arconez dijo...

cuando hago lo de directorio C:\Qt\4.6.2\... me dice, acceso denegado ¿he hecho algo mal?

Sergio dijo...

mmmm Pues es muy raro que diga eso, pero si estás ejecutando Windows 7 o Windows Vista puede que el problema venga de que el procedimiento requiere elevación.

Cuando vayas a ejecutar el Símbolo del Sistema de Microsoft Visual Studio 2008 dale clic con el botón secundario del ratón y selecciona "Ejecutar como administrador" a ver si te permite realizar el procedimiento.

Arconez dijo...

Lo he vuelto a hacer, pero en la consola de Qt, y me ha funcionado. Después, al compilar el proyecto, al abrir el HelloWorld.exe en Debug, me dice que me falta QtGuid4.dll. Tengo Windows 7. Gracias, por tu tutorial.

Arconez dijo...

He buscado el archivo, en mi pc y lo he encontrado.

Arconez dijo...

Ya averigué lo que me pasaba. Me habia saltado un paso, que era el de la variable de entorno. Después de cambiarlo me apareció la ventana. Perdona por mis preguntas.
Muchas gracias.
Buen tutorial.

Alexa dijo...

Saludos!!

He visto que se puede utilizar la libreria QT, utilizando QTCREATOR cuan factible es?

Sergio dijo...

@Alexa

Perfectamente factible. El QtCreator es para mi el mejor IDE para trabajar Qt tanto en Windows como en Linux. Cuando instalas Qt con los pasos que he dado aquí y posteriormente instalar QtCreator este último automáticamente detecta el compilador del Visual C++ 2008 y lo utiliza y no solo eso sino que además localiza e indiza los archivos de encabezados nativos del compilador.

Edward dijo...

Por fin, me ayudaste a compilar, he compilado para 64 bits, de lo mejor, todas las aplicaciones las hago con QT Creator, solo uso "nmake" para compilar en 64 bits, de lujo.

Edward dijo...

Si, me ayudaste mucho, me moria por compilar, pero yo lo hice para Windows de 64 bits, solo uso visual studio para compilar "nmake", y como IDE QT Creator de lo mejor.

Saludos y gracias !

Sergio dijo...

@Edward

Igual que yo, solo utilizo el Visual C++ por el compilador (nmake) por en realidad nunca abro el IDE todo lo hago desde QtCreator.