jueves, 31 de octubre de 2013

Me he equivocado otra vez. Me estoy volviendo loco por hacer una aplicación de escritorio con QtQuick Controls

Cuesta admitirlo pero me precipité al querer hacer un navegador de archivos con QtQuick Controls. Hablo de precipitación porque la moraleja para mi es que no están lo suficientemente maduros.

Justo hace un año hice una primera prueba con la beta de Qt 5. En ese momento sí que me di cuenta de que a la cosa le faltaba bastante cocción, lo dejé pronto. Pero con la salida de Qt 5.1 y el anuncio de la primera versión, también estable, de QtQuick Controls, me lancé, a mitades de Agosto, a crear el frontend de DFileBrowser en QML. Lo que me encontré fue lo siguiente:

 

Velocidad de desarrollo

Pronto tuve la sensación de que todo costaba más tiempo que usando widgets. Crear un ListView para ver los archivos me ha parecido un mundo. Echaba de menos esa capacidad de decir si es multiselección o no, si tiene scrollbar, etc. Todo se lo tiene que guisar uno mismo.

 

Otro ejemplo de esto fue el tener que hacer mi propio componente para seleccionar iconos, el
conocido rectángulo que trazas manteniendo apretado el botón izquierdo del ratón. Además tenía que calcular si los iconos estaban en el interior del rectángulo o dejaban de estarlo y, por supuesto, pintarlos como seleccionados según el caso.

Podría buscar mas casos pero creo que con esto es suficiente para hacerse una idea.

Cosas básicas que están pero no funcionan bien. 

Al salir Qt 5.1.1 me di cuenta que la SplitView fallaba, había dejado de funcionar. Así que metí mi primer bug en la página habilitada para tal cosa por el proyecto Qt. Lo positivo fue que en unos pocos días estaba corregido y asignado a la próxima versión del SDK (5.1.2)

Cosas que necesitaba y están por llegar. 

Ahora llegamos a lo último que descubrí, el drag and drop sólo funciona en la propia aplicación. Lo tenía implementado y me había dado cuenta de que sólo podía usarlo entre los dos navegadores que se pueden tener disponibles en DFileBrowser. Pensé que no me funcionaba con otras aplicaciones externas porque no había hecho algo bien, así que me anoté eso como un bug propio y me lo dejé para el final, pero tras un par de pruebas y rebuscar un poco por foros y listas de correo encontré que no era posible comunicarse con otros programas usando esta funcionalidad.


Moraleja

Como he dicho en un principio, pienso que me precipité. Debí darme cuenta de algunas de estas cosas antes o haberme documentado más. También es cierto que es relativamente difícil encontrar que tal cosa está disponible o no cuando das por hecho que así es por analogía con los widgets. En fin, al final el segundo punto y el tercero no dejan de ser anécdotas sabiendo que la versión 5.2 ya incluirá el drag and drop. Lo que me preocupa realmente es que continúe con la sensación de que todo es mucho más costoso y de que tienes que hacerte cosas que antes las tenías hechas y las podías incluir con una línea de código.