Nuestro equipo especializado pasados algunos días de investigación y de recopilar de información, hallamos los datos necesarios, deseamos que todo este artículo sea de gran utilidad en tu plan.
Solución:
Comencé haciendo todo codificado a mano, y últimamente he estado cambiando al uso de Qt Designer para la mayoría de los formularios. A continuación, se muestran algunos beneficios para cada puesto:
Usando Qt Designer
- El mayor ahorro de tiempo para mí es administrar diseños complejos; salva un lote 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 entonces más fácil.
- Tiende a mantener los archivos de implementación más limpios en lugar de llenarlos con todo el código de diseño estándar. Soy tipo A, así que me gusta.
- Si está traduciendo su aplicación, es posible enviar a sus traductores los archivos .ui para que puedan ver en su GUI donde estará el texto que están traduciendo. (Suponiendo que estén usando Qt Linguist).
Codificación manual
- Control. Si tiene un diseño en el que necesita instanciar / inicializar los controles en un orden muy particular, o crear dinámicamente los controles basándose en otros criterios (búsqueda de base de datos, etc.), esta es la forma más fácil.
- Si tiene widgets personalizados, puede usar el Diseñador, agregando el QWidget integrado más cercano del cual derivó 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, lo cual 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 manejarlo. No tiene más remedio que agregar ese control manualmente.
Diverso
- I no utilice la función SLOTS y SIGNALS de conexión automática (basada en una convención de nomenclatura como “on_my_button_clicked”). He descubierto que casi siempre tengo que configurar esta conexión en un momento determinado, no siempre que Qt lo haga por mí.
- Para
QWizard
formularios, he descubierto que necesito usar un archivo de interfaz de usuario diferente para cada página. Puede hacerlo todo en uno, pero resulta muy incómodo comunicarse entre páginas de cualquier forma personalizada.
En resumen, comienzo con Qt Designer y dejo que me lleve tan lejos como pueda, luego lo codifico manualmente desde allí. Eso es algo bueno sobre lo que genera Qt Designer: es solo otra clase que se convierte en miembro de su clase, y puede acceder a ella y manipularla según lo necesite.
Mi respuesta se basa en dos años desarrollando aplicaciones de bioquímica utilizando 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 todavía se aplican muchas cosas aquí.
Diseñador Qt
- Bien
- Exploración. Descubra qué widgets están disponibles, los nombres de esos widgets, qué propiedades puede establecer para cada uno, etc.
- Refuerza 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 eliminar widgets en tiempo de ejecución, debe tener esa lógica en el código. Creo que es una mala idea poner la lógica de la interfaz de usuario en dos lugares.
- Realización de cambios en 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 deseada.
Codificación manual
-
Bien
- Rápido si está muy familiarizado con Qt.
- La mejor opción si necesita agregar o eliminar widgets en tiempo de ejecución.
- Más fácil que Qt Designer si tiene sus propios widgets personalizados.
- Con disciplina, aún puede separar el diseño de la interfaz de usuario del comportamiento. Simplemente coloque su código para crear y diseñar widgets en un lugar, y su código para configurar señales y ranuras en otro lugar.
-
Malo
- Lento si es nuevo en Qt.
- No hacer cumplir separación del diseño del comportamiento.
Consejos
-
No se limite a crear sus ventanas. Comience dibujando rápidamente varios diseños posibles, ya sea en papel o con una herramienta como Balsamiq Mockups. Aunque podría hacer esto en Qt Designer, creo que es demasiado tentador pasar mucho tiempo tratando de que sus ventanas se vean bien antes de decidir 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. Hacer esto hace que sea más fácil cambiar la forma en que sus widgets están organizados en una ventana sin afectar la lógica de su 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 trabajar, lo extraño.
Tiendo a diseñar cuadros de diálogo con 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 simplemente frustrante, una lástima, ya que los diseñadores decentes basados en el tamaño de arrastrar y soltar han existido durante más de una década.
Más adelante puedes encontrar las crónicas de otros creadores, tú además puedes mostrar el tuyo si dominas el tema.