@ agnasg

agnasg


Cómo comenzar con QT o mis primeros pasos con QT

29-01-2014 11:15 AM

Desde hace años (6-7 años no recuerdo) he estado usando el gui de irrlicht para diseñar interfases de usuarios. En este momento estoy implementando una aplicación más complicada así que tuve que escoger algo mejor.  Leí en alguna parte que Ultimate++ era fácil, potente y con una curva de aprendizaje bien suave. Al revisar su sitio web todo parecía aceptable. La verdad estuve unas semanas probando pero no me gustó, así que mi siguiente intento fue buscar lo mejor de lo mejor, que resultaron ser wxWidgets y Qt. Pero luego de leer varias páginas (como esta) resultó claro que QT era el ganador. Su único problema era su tamaño (el paquete tiene 290 mb comprimido). En un post anterior describo mis peripecias instalándolo y ahora quiero comentar mi experiencia al hacer el primer programa “Hello world”.

Para instrucciones sobre cómo instalar Qt en Windows usando MSVS 2010 ver este post.

La recomendación es tratar de compilar un ejemplo para garantizar que todo esté bien instalado. Para ello necesitamos Qt creator, que para mi sorpresa no viene en el mismo paquete, es decir, qt creator no está en los fuentes de qt, es un paquete aparte que se encuentra en el sitio (en esta página). El segundo problema es que todos los tutoriales, ejemplos y explicaciones omiten el primer paso. El ambiente, cómo indicarle a Qt creator dónde está QT, dónde está el compilador (MS VS 2010 en mi caso), etc..

Estuve 15 minutos revisando variables de ambiente, porque al parecer Qt creator sabía que mi compilador es MS VS 2010, pero no sabía cómo encontrar  el compilador (cl) , ni dónde estaban los dll (lo cual es bien confuso). Esto genera Error 1 o Error 2 cuando jom o nmake terminan. La solución es simplemente invocar Qt creator desde una ventana que tenga las variables de ambiente asignadas correctamente. Esto se puede lograr abriendo una consola de comando y ejecutando el archivo vcvars32.bat (que se encuentra en C:\Archivos de programa\Microsoft Visual Studio 10.0\VC\bin o donde quiera que tenga instalado MS VS 2010), o también se puede lograr abriendo la consola de comando que viene en el menú donde está MS VS (en inglés esa opción se llama Visual Studio Command prompt) En este último caso no hay que ejecutar vcvars32.bat  por razones obvias (eso es lo que hace ese comando antes de abrir la consola). Luego en esta cósola nos movemos a donde esté instalado Qt Creator (en mi caso en C:\qt\qtcreator-3.0.0\bin) y ejecutamos qtcreator.exe. Y todos nuestros problemas pasados y futuros se resuelven.

Notas:

  • Estoy consciente de esta discusión: ¿[Si QT es tan bueno, ] Por qué no hay más aplicaciones desktop desarrolladas en QT?, pero la clave aquí es esta afirmación: “But if you’re C++ programmer, Qt is your framework. No rival.” (“Pero if usted es un programador C++, QT es su plataforma. No tiene rival”). La aplicación que estoy haciendo es en C++, ya está desarrollada, no hay mayor discusión.
  • Editado para agregar detalles adicionales al instalar por segunda vez en Windows 7 64bits.

Mors in vallem descensum – Instalación de Qt

24-01-2014 10:27 AM

Estoy compilando qt… desde hace una semana.  qt es una herramienta para desarrollar aplicaciones con interfaz gráfica de usuario. Quiero sustituir a irrlicht gui de una de mis herramientas para manipulación de datos (tipo etl pero sin tanta parafernalia).

Para información sobre cómo comenzar a trabajar con Qt una vez que está instalado ver este post.

Primer paso como se describe aquí (también ver aquí) es descomprimir el archivo qt-everywhere-opensource-src-5.2.0.zip. A mi no me funcionó Winrar, así que utilicé 7z (que se puede conseguir aquí).

Segundo paso crear la configuración, dependiendo de sus preferencias el comando es algo así como esto:

configure -debug -nomake examples -opensource -platform win32-msvc2010 -opengl desktop -static
Ver abajo más detalles

¿Errores? Una miríada. Al principio traté de compilarlo utilizando MSVS  Express 2005 aún cuando la documentación dice que solamente MSVS 2010+ está soportado. Problemas. Muchos problemas. Mi conclusión es que es imposible porque hay un archivo que no es compatible en lo absoluto. Inclusive dice que es un archivo que va a ser eliminado. Su función parece ser garantizar que nadie intente compilar con MSVS  Express 2005.

Ergo, MSVS2010. Errores. Muchos. Cada error en MSVS 2010 tiene su explicación. Este error:

YarrInterpreter.obj : error LNK2019: unresolved external symbol “struct JSC::Yarr::CharacterClass * __cdecl JSC::Yarr::newlineCreate(void)”

se debe a que se requiere python instalado. python se utiliza para customizar “algo” en el interprete Yarr (un intérprete js de webkit). La documentación indica que se requiere perl, pero yo no leí por ningún lado “se requiere python”. Inclusive hay páginas como esta que indican que la distribución (el famoso archivo qt-everywhere-opensource-src-5.2.0.zip), incluye todo lo necesario. Incluye todo lo necesario my ass.

Este otro error:

C2061: syntax error : identifier ‘__RPC__out_xcount_part’

que aparece en los archivos relacionados a DirectX (por ejemplo /qtmultimedia/src/plugins/directshow) se debe a un conflicto entre la definición de la plataforma (en mi caso win32-msvc2010) y los archivos de DirectX (yo uso febrero de 2007). Por ahí se dice que la solución es garantizar que el include de DirectX esté después del include win32-msvc2010, pero eso a mí no me funcionó. Lo que hice fue hacer algo ridículo, eliminar completamente el include de DirectX en el makefile. Funcionó. Es decir, para compilar directshow no se requiere realmente DirectX. Weird.

Otra fuente de errores es utilizar el comando configure incorrectamente. Este comando tiene 30 opciones diferentes así que se requiere experiencia para usarlo. Será dentro de dos meses, quizás. Entre mis primeros intentos este me parecía el correcto:
configure -debug -nomake examples -opensource -platform win32-msvc2010 -opengl desktop
Finalmente me quedé con este:
configure -debug -nomake examples -opensource -platform win32-msvc2010 -opengl desktop

Pero se me olvidó que requiero de las librerías estáticas. Ups. Así que debe ser este:

configure -debug -nomake examples -opensource -platform win32-msvc2010 -opengl desktop -static

Si por alguna razón usted requiere reconfigurar, se puede borrar todo y empezar de nuevo con:

nmake confclean (o nmake clean (maybe))

Si este comando falla es mejor eliminar la carpeta y descomprimir el archivo  qt-everywhere-opensource-src-5.2.0.zip de nuevo. Yo estuve compilando en una máquina 64 bits, y con target 32bits. Mi configuración no era la correcta así que se geraron muchos errores al momento del link. El nmake clean parece que no borra los makefiles, así que se pueden generar errores que nadie entiende. La forma para estar seguro es como dije al comienzo, borrar la carpeta y descomprimir el archivo  qt-everywhere-opensource-src-5.2.0.zip de nuevo.

Es buena idea utilizar la cónsola del SDK de Microsoft para compilar porque ya tiene todas las variables con los valores correctos. Y debes abrirla con privilegios de administrador.

Notas

 

Las coincidencias no existen, al igual que no existe tal cosa llamada almuerzo gratis

23-01-2014 4:54 PM

Simplemente dos noticias:

No te prometo nada pero lo te lo garantizo

15-01-2014 9:18 AM

Los enamorados son la gente más inteligente del mundo. Porque entienden un lenguaje ininteligible:

  • Te amo pero es mejor que estemos separados.
  • Estoy de acuerdo contigo pero es mejor que abandones esas ideas.
  • Me gustaría verte cuando se pueda.
  • ¿Quieres venir mañana? Si no quieres no importa.
  • Vamos a vernos lo antes posible, cuando regrese de mi viaje a Europa.
  • Debes hablar con ella cuanto antes y sé honesto ante todo. ¿Cuándo nos vemos?
  • Lo que más quiero es estar contigo, pero la vida nos ha separado.
  • Yo te entiendo pero nunca sé qué quieres decir cuando dices eso.
  • Te acepto tal como eres pero no soporto tus incoherencias.
  • Vamos a hablar.
  • Búscate a otra.
  • Mi mamá me dijo que yo no tengo que ayudarte.
  • Mi familia y amigos no lo van a ver bien, pero no importa. Es normal.
  • No te prometo nada pero te lo garantizo.

Estar enamorado es la condición normal de esta locura que es la vida. Lo contrario es una enfermedad mental.