precio - Qt Designer vs Handcoding
qt designer python tutorial español pdf (5)
Cada vez que comienzo un proyecto con un conjunto de herramientas gráficas, uno de los primeros conflictos ocurre con la decisión de cómo tratar el diseño visual y el diseño del widget: ¿una herramienta gráfica o una codificación manual?
Esta es una pregunta bastante complicada / subjetiva porque la mayoría de las personas decidirá según sus preferencias personales. También depende en gran medida de la calidad de la herramienta gráfica. En este caso, me gustaría centrarme solo en la última versión de la biblioteca QT. No pretendo discutir qué método es mejor. Estoy convencido de que la mejor respuesta es: depende del proyecto.
Lo que quiero es una referencia a un buen artículo no sesgado, basado en la experiencia después de varios proyectos. El artículo debería describir las compensaciones de ambas opciones
Depende de la cantidad de ventanas / paneles diferentes que necesite para su aplicación. Si el número es pequeño, use una herramienta gráfica. Es mucho más rápido obtener algunas ventanas diseñadas perfectamente. Si el número es grande, la herramienta gráfica puede (y debe) solo usarse para prototipos. Debe codificar el diseño para poder realizar cambios en toda la aplicación a un costo aceptable.
Eso incluye crear un modelo de cómo funciona la interfaz de usuario de la aplicación y agregar y eliminar dinámicamente widgets en tiempo de ejecución. Para obtener un excelente ejemplo de dicho modelo (en un entorno diferente), eche un vistazo al modelo de glamour para crear navegadores de objetos.
Me opongo a la sugerencia de que es complicado / subjetivo (al menos más que otras opciones de desarrollo). Es fácil encontrar los criterios para decidir. La experiencia personal y las preferencias son importantes para eso, ya que deciden cuándo se debe considerar pequeña la cantidad de ventanas diferentes. Lo mismo aplica para la calidad de la herramienta.
Empecé haciendo todo codificado a mano, y en los últimos tiempos he pasado al uso de Qt Designer para la mayoría de los formularios. Aquí hay algunos beneficios para cada posición:
Usando Qt Designer
- El mayor ahorro de tiempo para mí es administrar diseños complejos; ahorra una gran cantidad de codificación tediosa. Simplemente (muy aproximadamente) organice sus widgets, selecciónelos, haga clic con el botón derecho y colóquelos en el tipo correcto de diseño. Especialmente cuando los diseños se anidan, esto es mucho más fácil.
- Tiende a mantener sus archivos de implementación más limpios en lugar de llenarlos con todo el código de diseño repetitivo. Soy tipo A, así que me gusta eso.
- Si está traduciendo su aplicación, es posible enviar a sus traductores los archivos .ui para que puedan ver en su GUI dónde estará el texto que están traduciendo. (Suponiendo que están usando Qt Linguist)
Codificación manual
- Controlar. Si tiene un diseño donde necesita instanciar / inicializar los controles en un orden muy particular, o crear dinámicamente los controles en función de otros criterios (búsqueda de base de datos, etc.), esta es la manera más fácil.
- Si tiene widgets personalizados, puede usar el Diseñador, añadiendo el QWidget integrado más cercano del que deriva su clase y luego "actualizándolo". Pero no verá una vista previa de su widget a menos que lo convierta en un complemento de diseñador en un proyecto separado, que es demasiado trabajo para la mayoría de los casos de uso.
- Si tiene widgets personalizados que toman parámetros en su constructor más allá del padre QWidget opcional, Designer no puede manejarlos. No tiene más remedio que agregar ese control manualmente.
Diverso
- No uso la función de conexión automática de RANURAS y SEÑALES (basada en la convención de nomenclatura como "on_my_button_clicked".) He descubierto que casi invariablemente tengo que configurar esta conexión en un momento determinado, no siempre que Qt lo haga por mí .
- Para los formularios de
QWizard
, he descubierto que necesito usar un archivo de UI diferente para cada página. Puede hacerlo todo en uno, pero se vuelve muy incómodo comunicarse entre páginas de cualquier forma personalizada.
En resumen, empiezo con Qt Designer y dejo que me lleve todo lo lejos que pueda, luego lo codigo manualmente desde allí. Eso es algo bueno sobre lo que genera Qt Designer: es solo otra clase que se convierte en miembro de tu clase, y puedes acceder a ella y manipularla según lo necesites.
Mi respuesta se basa en dos años desarrollando aplicaciones bioquímicas usando PyQt4 (enlaces de Python a Qt 4) y OpenGL. No he hecho C ++ Qt, porque solo usamos C ++ para algoritmos críticos para el rendimiento. Dicho esto, la API de PyQt4 se parece mucho a Qt4, por lo que aún se aplica mucho aquí.
Qt Designer
- Bueno
- Exploración. Descubra qué widgets hay disponibles, los nombres de esos widgets, qué propiedades puede establecer para cada uno, etc.
- Impone la separación de la lógica de la interfaz de usuario de la lógica de la aplicación.
- Malo
- Si necesita agregar o quitar widgets en tiempo de ejecución, debe tener esa lógica en el código. Creo que es una mala idea poner tu lógica de UI en dos lugares.
- Hacer cambios a los diseños anidados. Cuando un diseño no tiene widgets, se colapsa y puede ser muy difícil arrastrar y soltar un widget en la ubicación que desee.
Codificación manual
Bueno
- Rápido si estás muy familiarizado con Qt.
- La mejor opción si necesita agregar o quitar widgets en tiempo de ejecución.
- Más fácil que Qt Designer si tienes tus propios widgets personalizados.
- Con disciplina, aún puede separar el diseño de la IU del comportamiento. Simplemente coloque su código para crear y diseñar widgets en un lugar, y su código para establecer señales y ranuras en otro lugar.
Malo
- Lento si eres nuevo en Qt.
- No impone la separación del diseño del comportamiento.
Consejos
No te limites a crear tus ventanas. Comience por dibujar rápidamente varios diseños posibles, ya sea en papel o usando una herramienta como maquetas Balsamiq. Aunque podrías hacer esto en Qt Designer, creo que es demasiado tentador pasar mucho tiempo intentando que tus ventanas se vean bien antes de que incluso hayas decidido si es el mejor diseño.
Si usa Qt Designer para PyQt, tiene el paso adicional de ejecutar pyuic4 para compilar sus archivos * .ui en archivos fuente de Python. Me resultó fácil olvidar este paso y rascarme la cabeza por un segundo por qué mis cambios no funcionaron.
Si codifica su interfaz de usuario a mano, le sugiero que coloque su código de diseño en un lugar y sus señales y ranuras en otro lugar. Al hacerlo, es más fácil cambiar la forma en que se organizan los widgets en una ventana sin afectar a la lógica de la aplicación. O puede cambiar algún comportamiento sin tener que recorrer todo el código de diseño.
¡Disfruta Qt! Ahora que estoy usando Java Swing para el trabajo, lo extraño.
Tiendo a diseñar diálogos usando el diseñador pero hago todo el manejo de eventos en el código principal. También hago todas las ventanas principales, barras de herramientas, menús en código directo.
El diseñador es frustrante, una lástima, ya que los diseñadores decente basados en el arrastre y el soltar han estado presentes por más de una década
Yo uso una combinación de ambos:
Creo que para las coordenadas x, y, Designer es el camino a seguir.
Muchas de las otras propiedades de UI, etc. se pueden configurar en su código.
Creo que tratar de hacer la IU completamente a mano sería un proyecto que consumiría mucho tiempo. No es tan simple como configurar tablas HTML.
Sí, la versión 4 es mala, pero las personas en el trabajo que usaron la versión 3 dijeron que era REALMENTE mala. Montones de choques.
Yo, junto con mis compañeros QTers, realmente estamos esperando que la versión 5 sea una mejora.
Sé que esta es una vieja pregunta, ¡pero espero que esto ayude! La experiencia de un hombre