Pregunta

Voy a pasar estos días de fiesta que están aprendiendo a escribir aplicaciones Qt. Yo estaba leyendo acerca de Qt Designer hace tan sólo unas horas, lo que me hizo preguntarme: ¿qué personas que escriben aplicaciones del mundo real en Qt utilizan para diseñar sus GUI? De hecho, ¿cómo diseñar interfaces gráficas de usuario gente en general?

Yo, por ejemplo, descubrí que escribir el código a mano era conceptualmente más simple que el uso de Qt Designer, aunque para el diseñador GUI compleja podría tener sentido. Grandes interfaces gráficas de usuario podría ser posible utilizando Designer, pero con el tiempo podría llegar a ser muy difícil de manejar a medida que aumenta la complejidad (esto es sólo mi opinión). También he descargado el código fuente AmaroK a echar un vistazo a lo que esos tipos estaban haciendo, y ha encontrado muchas llamadas a addWidget () y amigos, pero ninguno de esos archivos XML creados por el diseñador (a un lado: AmaroK tiene que ser mi aplicación favorita nunca en cualquier plataforma).

Entonces, ¿cuál es la manera "correcta" para crear una interfaz gráfica de usuario? Diseñador o código? Veamos, para esta discusión, consideramos los siguientes tipos de interfaces gráficas de usuario:

  1. diálogos simples que sólo tiene que tomar de entrada, mostrar algún resultado y salida. Vamos a suponer una aplicación que toma una URL de YouTube y descarga el vídeo en el disco duro del usuario. El tipo de aplicaciones es probable que empezar con un novato.
  2. Nivel intermedio interfaces gráficas de usuario como, por ejemplo, un editor de notas adhesivas con unos pocos elementos barra de herramientas / menú. Echemos xPad por ejemplo ( http://getxpad.com/ ). Yo diría que la mayoría de las aplicaciones que cae en la categoría de "utilidades".
  3. interfaces gráficas de usuario muy complejas, como AmaroK u OpenOffice. Usted sabe 'em cuando los veo porque hacen que sus ojos sangran.
¿Fue útil?

Solución

Nuestra experiencia con el diseñador comenzó en Qt3.

Qt3

En ese momento, diseñador fue útil principalmente para generar código que usted entonces compilar en su aplicación. Empezamos a usar para tal fin, pero con todo el código generado, una vez que lo edita, ya no se puede volver atrás y regenerarlo sin perder sus ediciones. Terminamos a tomar el código generado y hacer todo a mano a partir de ahora.

Qt4

Qt4 ha mejorado significativamente el diseñador. Ya no lo hace sólo generan código, pero que es posible cargar dinámicamente en sus archivos de diseño (en XML) y dinámicamente a conectarse a los objetos que se ejecutan en su programa - número de código generada sin embargo, usted tiene que nombrar los elementos de diseñador y seguir con los nombres para no romper su código

.

Mi evaluación es que es ni de lejos tan útil como el Interface Builder en Mac OS X, pero en este momento, pude ver el uso de los archivos de diseño directamente en un programa.

No nos hemos movido de nuevo a Diseñador desde Qt3, pero todavía lo utilizan para crear prototipos y diseños de depuración.

Para sus problemas:

  1. Se puede conseguir probablemente lejos con el uso de los cuadros de diálogo estándar que ofrece Qt. QInputDialog o si subclase QDialog, asegúrese de usar QButtonDialogBox para asegurarse de que sus botones tienen la plataforma de diseño adecuado.

  2. Probablemente se podría hacer algo más limitado, como xPad con funcionalidad limitada Designer.

  3. No creo que podría escribir algo así como OpenOffice exclusivamente con el diseñador, pero tal vez eso no es el punto.

que haría uso de diseñador como otra herramienta, al igual que su editor de texto. Una vez que encuentre las limitaciones, trata de una herramienta diferente para ese nuevo problema. Estoy totalmente de acuerdo con Steve S que una ventaja de diseñador es que alguna otra persona que no es un programador puede hacer el diseño.

Otros consejos

En mi experiencia con Qt Designer y otros kits de herramientas / UI-herramientas:

  • herramientas de interfaz de usuario aceleran el trabajo.
  • herramientas de interfaz de usuario que sea más fácil ajustar el diseño más tarde.
  • herramientas
  • interfaz de usuario que sea más fácil / posible para los no programadores a trabajar en el diseño de interfaz de usuario.

La complejidad a menudo puede ser tratado en una herramienta de interfaz de usuario, rompiendo el diseño de interfaz de usuario en varios archivos. Incluir pequeños grupos lógicos de componentes en cada archivo y tratar cada grupo como un único widget que se utiliza para construir la interfaz de usuario completa. El concepto de Qt Designer de widgets promovidas puede ayudar con esto.

No he encontrado que la escala del proyecto hace ninguna diferencia. Su experiencia puede variar.

Los archivos creados con las herramientas de interfaz de usuario (Creo que se puede escribir a mano si realmente quería) a menudo se pueden cargar dinámicamente en tiempo de ejecución (Qt y GTK + tanto proporcionar esta característica). Esto significa que usted puede hacer cambios en el diseño y prueba de ellos sin tener que recompilar.

En última instancia, creo que ambas herramientas de código y la interfaz de usuario primas pueden ser eficaces. Probablemente depende mucho del medio ambiente, el / UI-herramienta caja de herramientas, y por supuesto, las preferencias personales. Me gusta herramientas de interfaz de usuario, ya que me a funcionar rápidamente y permiten obtener cambios fáciles tarde.

La organización para la que trabajo ha portado su aplicación GUI para Qt hace varios años. Creo que hay varios aspectos que vale la pena mencionar:

  • Trabajar con Qt Designer, al menos en ese momento, no era una opción realista: había demasiadas características que no se podía hacer con Qt Designer;
  • Convenciones y estructura que tenían que ser preservado impidieron el uso de Qt Designer;
  • Una vez que haya comenzado sin Designer, es probable que sea difícil volver a ella;
  • el aspecto más importante, sin embargo, fue que los programadores fueron muy utilizados para la programación usando vi o emacs, en lugar de utilizar un IDE de interfaz gráfica de usuario.

Mi propia experiencia, que se remonta aprox. 4 años, utilizando Qt3.3, es que el comportamiento dinámico en los cuadros de diálogo no era posible realizar en Designer.

Sólo para decir que he escrito y mantenido interfaces gráficas complejas en Qt sin usar Qt Designer - no porque no me gusta Qt Designer, sino porque no llegué a trabajar de esa manera

.

Es en parte una cuestión de estilo y de dónde viene desde: cuando empecé en Qt, que había tenido experiencias horribles de Dreamweaver y Frontpage y otras herramientas de HTML visual, y el código escrito mucho preferido con HomeSite y recurrir a Photoshop para problemas de diseño complicados.

Hay un peligro con entornos de desarrollo de códigos visuales que se trate de mantener dentro de las herramientas visuales, pero al final tener que modificar el código, así -. En formas que no son bien comprendidas

iPhone desarrollo de aprendizaje, por ejemplo, lo he encontrado frustrante para golpear 'mágica' cosas visual ( 'arrastre desde el círculo vacío en el inspector de conexiones al objeto en la ventana Interface Builder ...') que sería más simple (para mí) para entender en el código simple y llano.

Buena suerte con Qt - que es un gran conjunto de herramientas, sin embargo, que lo utilice, y Qt Creator se parece ser un gran IDE

.

Me gustaría añadir que una de las razones para el uso de diseñador gráfico es la falta de controladores de distribución en Win32, por ejemplo. Sólo posicionamiento absoluto era posible, y haciendo que la mano habría simplemente chupado.

Desde que cambié de Delphi a Java para aplicaciones GUI (en 2002), nunca he utilizado los diseñadores más. Me gusta mucho más controladores de distribución. Y sí, se obtiene código repetitivo, pero los objetos en movimiento sobre un diseñador de interfaces puede tomar tanto tiempo como el cambio de la plancha de caldera. Además, me gustaría ser pegado con un IDE lenta; eso es para el caso # Java / C, bien, mientras que para Qt (especialmente Qt4), no se aplica. Para Qt3, me pregunto por qué hay que modificar el código generado - ¿No era posible añadir código en otros archivos? Por lo que?

Sobre los casos discutidos: 1) La mano con código GUI es probablemente más rápido de escribir, al menos si conoce sus bibliotecas. Si usted es un novato y no se sabe de ellos, puede ahorrar tiempo y aprender menos con un diseñador, ya que no es necesario para aprender las API que utiliza. Pero "aprender menos" es el factor clave, por lo que en ambos casos yo diría mano Coded interfaz gráfica de usuario.

2) Las barras de menús son bastante molesto para escribir código para. Además, pensar a los detalles como aceleradores y así sucesivamente. Aún así, depende de lo que estamos acostumbrados. Después de algún tiempo, puede ser más rápido que escribir que la plancha de caldera de apuntar y hacer clic en el diseñador de solucionar todas aquellas propiedades, pero sólo si realmente se puede escribir como en una máquina de escribir (como los administradores para el que escribir comandos Unix es más rápido que utilizando cualquier GUI).

3) Me extiendo la respuesta para el caso # 2 a éste. Tenga en cuenta que, para plataformas Win32, puede ser posible que el uso de los diseñadores que generan recursos Win32 podría ser más rápido de carga (ni idea de eso).

No obstante, me gustaría hablar de un posible problema con el uso de Qt Designer allí. caso en el mundo real: se tomó algunos segundos (por ejemplo, 10) para cargar un cuadro de diálogo de Java complejo (el cuadro de diálogo Preferencias para el editor de texto de un programador) con un montón de opciones. La corrección correcto habría sido para cargar cada una de las pestañas sólo cuando el programador quería verlos (I di cuenta de que después), mediante la adición de un método separado para cada conjunto de preferencias para construir su GUI.

Si el diseño de todas las fichas y el conmutador de lengüeta junto con un diseñador, se puede hacer eso con tanta facilidad? Supongo que podría haber un ejemplo similar en una interfaz gráfica de usuario codificados mano le da más flexibilidad, y en una gran aplicación tal, es muy probable que necesite que, aunque sólo sea por razones de optimización.

Uno de los principales beneficios del uso de diseñador para crear interfaces gráficas de usuario es que otros programadores pueden cambiar o mantener las formas y widgets fácilmente sin la necesidad de ahondar en un código complejo.

Su extraño que usted está diciendo que el código de escritura es más simple que la manipulación de objetos en un entorno gráfico. Es una obviedad.
El diseñador está ahí para hacer su vida más fácil y en el largo plazo hace que el código sea más fácil de mantener. Es más fácil buscar en el diseñador para ver lo que la interfaz de usuario se parece a continuación, la lectura del código y tratando de imaginar lo que podría ser similar.
Con corriente Qt se puede hacer casi de todo, desde dentro del diseñador y las pocas cosas que no puede hacer, que se puede arreglar con muy pocas líneas de código en el constructor. Tomemos por ejemplo el ejemplo más simple - la adición de una conexión de ranura de la señal. Usando el diseñador es tan simple como un doble clic. Sin que el diseñador tiene que ir buscar la firma correcta de la señal, editar el archivo .h y luego editar escribir el código en el archivo .cpp. El diseñador le permite estar por encima de estos detalles y centrarse en lo que realmente importa -. La funcionalidad de la aplicación

Me gusta convertir primero el diseñador para desarrollar widgets de interfaz gráfica de usuario. Como se mencionó en los otros puestos, el más rápido. También puede obtener una retroalimentación inmediata para ver si "se ve bien" y no es confuso para los usuarios. El diseñador es una de las principales razones elijo Qt sobre otros conjuntos de herramientas. Yo sobre todo utilizar el diseñador para que los diálogos de una sola vez.

Una vez dicho esto, hago la ventana principal y ningún widget complejos a mano. Creo que esta es la forma de Trolltech pretende. QFormLayout es una clase que proporcionan a crear fácilmente programáticamente un diálogo de entrada.

Por cierto, el diseñador de Qt 4 no es un IDE como la que tenían en Qt 3. Es sólo un editor para editar archivos .ui. Me gusta de esa forma. El nuevo IDE multiplataforma va a ser llamado Qt Creator.

Es un antiguo puesto, pero yo le aconsejo que mire Clementina - un reproductor de música que (creo) se deriva de Amarok. Utilizan Qt4 y por lo que puedo ver que es un ui carpeta en el src carpeta del proyecto. En el ui carpeta como uno podría esperar que tienen todo tipo de archivos .ui. Si se compila y empezar a Clementina se verá que la GUI es bastante complejo y bastante agradable.

Para mí, depende de cuánto lógica de está encapsulado en el widget / GUI. Si se trata sólo de formas simples, yo prefiero usar QtDesigner.

Si contiene controles complejos o interacción, tiendo a programarlo.

Estamos utilizando el Qt Designer si alguien necesita para crear una GUI.
La cosa es crear sólo pequeños widgets para ciertas tareas (como lo haría en una clase de diseño) y luego unirlos en un "padre-gui".

De esta manera sus widgets son altamente reutilizables y pueden ser utilizados para Guis de forma modular. Sólo hay que especificar que señala cada widget está enviando y qué ranuras que proporcionan.

Además estamos creando .ui-Files, que la que podría generarse durante la acumulación de procesos. Hasta ahora no había ninguna necesidad de editar esos archivos a mano.

Construir diferentes partes de la interfaz de usuario
en diferentes archivos .ui utilizando QtDesigner, España luego llevarlos juntos (y añadir complicaciones) en el código.

Hay cosas que no se puede hacer en Qt Designer, sólo se puede hacer en el código,
Diseñador de modo Qt es sólo una (gran) parte de la cadena de herramientas .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top