@ agnasg

agnasg


Desarrollo en Qt

24-07-2014 5:47 PM

Es difícil saber cuándo vamos a adquirir velocidad de crucero desarrollando en Qt. Usualmente por mi experiencia de 3 décadas desarrollando sistemas con múltiples lenguajes, plataformas, API’s, etc., luego de una semana ya puedo comenzar a dar estimados. Con Qt todos los días son como entrar por primera vez a un dungeon de Cataclismo (una expasión de Wow) : nunca se sabe qué va a pasar. Ir a google a preguntar es una experiencia tan frustrante como buscar ayuda sobre pentaho. Creo que esta advertencia en Stackoverflow lo resume todo:

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.

Esta pregunta ha atraido respuestas de baja calidad. En realidad rara vez se consiguen respuestas de calidad aceptable. Siempre es algo así como “a mi me ha funcionado de esa manera, cómo y por qué no tengo idea”. La pregunta en cuestión es por qué o cuándo usar QMainWindow, o QDialog o QWidget. Las respuestas son similares a las explicaciones en el Manual del Recientemente Fallecido (Handbook for the Recently Deceased) no tienen sentido, o son explicaciones que se contradicen intrínsecamente de una forma externa manteniendo el aspecto circunscrito a la periferia interna.

Si esto estuviera solamente en el ámbito de Stackoverflow o algunos foros especializados como www.qtcentre.org donde todos los que no saben se deleitan en su ignorancia no sería tan grave, pero es que lo mismo sucede en developer.nokia.com y qt-project.org/forums. Por ejemplo, vemos en el tutorial de stylesheet que para agregar un estilo a un componente es algo así como esto:

qApp->setStyleSheet(“QGroupBox { margin-top:20px; } “);

 

A mi me llamó la atención inmediatamente porque eso no es una expresión válida CSS. Los selectores comienzan con “.” o con “#”. Pues si hacemos lo que aparece en la mencionada página, la aplicación falla, el menú desaparece, se abre un agujero negro, se genera una fuga en el espacio tiempo. No sé si por intuición o porque lo había visto en alguna parte (creo que está en uno de los ejemplos en la distribución de qt) le agregué el “.” antes del selector. Todo comenzó a funcionar . Quedó así:

qApp->setStyleSheet(“.QGroupBox { margin-top:20px; } “);

Ese “punto” es muy importante.

Prepárese para dejar un rastro de notas, bookmarks, source code inservible y noches y días llenos de frustración. Por ejemplo, mi carpeta de bookmarks quedó así:

bookmarks-qt
¿Algunas palabras finales?. Pues al final, al final, final, todo funciona:

Al final, sin explicación alguna, las cosas comienzan a funcionar. Cómo y por qué, es algo desconocido. Pero ese desenlace esperanzador me mantiene motivado a seguir adelante.