Este artículo cubre que no hacer o que no es aconsejable (malas prácticas), cuando se desarrolla con Qt Quick es. Los temas están comentados por desarrolladores que han cometido o visto estos errores comunes durante su trabajo. Por favor, añade tus recomendaciones y ayuda a que la página crezca.

Malas prácticas con Qt Quick

Tamaños y posiciones fijas

Como el código Qt Quick puede ejecutarse en dispositivos con resoluciones variadas, es importante permitir que tu aplicación escale arriba o abajo. Incluso si tienes fijo una determinada resolución para la plataforma (p.e. 640×360 en Symbian), dispositivos futuros pueden ser publicados con resoluciones diferentes o podrías acabar necesitando soportar una plataforma diferente. Diciendo esto, muchas aplicaciones puede que no sean apropiadas para escalar a un escritorio completo o escalar hacia un dispositivo móvil.

Otro ejemplo de tener tamaños dinámicos es que puedes decidir después cambiar su tamaño a través de una función, o de otra manera, las posiciones y tamaños de tu disposición cambiarán dinámicamente tambén. Este ejemplo debajo demuestra ese problema.

Cuando se centra un elemento:

  1. Item {
  2.     width: 200; height: 200 //<-- El elemento más exterior escala al tamaño de la ventana de QMLviewer
  3.     Rectangle {
  4.         x: 50; y: 50 //<-- No!
  5.         width: 100; height: 100 //<-- No!
  6.         color: "red"
  7.         // Después decides añadir una animación
  8.         Behavior on width { NumberAnimation { duration: 500 } }
  9.         MouseArea {
  10.             anchors.fill: parent
  11.             onPressed: parent.width = 150;
  12.         }
  13.     }
  14. }

El ejemplo anterior no estará centrado al ser clicado. Si fijas “x” a 25, la animación no funcionará correctamente

En este caso deberías usar en su lugar:

  1. anchors.centerIn: parent

en la línea 4, y así será capaz de identificar el centro por ti, y evita problemas cuando se cambie el ancho o alto en el futuro

Qt Quick maneja el código multiplataforma por ti, y depende de ti si tu código es multiresolución

Ver también

Categories: