Pregunta

Ahora tengo la idea de comenzar el desarrollo de un marco similar a Qt / GTK +, pero quiero saber algunas cosas antes de comenzar la creación de este proyecto:

  • ¿Cuál es la estructura de GTK + y Qt?
  • ¿Necesito desarrollar un administrador de ventanas para construir mi propio marco?
  • ¿Algunos recursos para comenzar?
¿Fue útil?

Solución

Eso suena como una empresa importante, al menos como un proyecto inicial.

No estoy seguro de lo que quiere decir con "la estructura" de p. GTK +. Puede ver la jerarquía de objetos para GTK +, que le indica al menos cómo los objetos implementados (GTK + es una API orientada a objetos) se relacionan entre sí. Puedes adivinar cómo se puede estructurar el código, a partir de esa información.

Y no, no necesita escribir su propio administrador de ventanas; los kits de herramientas se ocupan principalmente de lo que sucede con las ventanas dentro , no con la administración de ventanas en sí. Por supuesto, podría decidir que su " plataforma " debería tener un alcance más amplio e incluir un WM.

Otros consejos

Desarrollar un marco de GUI / Aplicación es una tarea importante. Es posible que desee ser muy claro sobre por qué necesita escribir otro marco.

Ambos proyectos que mencionas son de código abierto. ¿Por qué no comenzar allí?

  1. GTK: git clone git: //git.gnome.org/gtk+
  2. Qt: git clone git: //gitorious.org/qt/qt.git

Ed Usted pregunta cuál es la estructura de GTK y Qt, si necesita escribir su propio administrador de viudas (respuesta: no) y cómo comenzar. Las respuestas a al menos las dos primeras están en el código fuente. No olvides que los grandes practicantes en cualquier campo aprenden observando a otros. Leer el código no es diferente.

Escribir un marco de GUI / aplicación sería una gran experiencia de aprendizaje, pero incluso un marco de aplicación bastante pequeño sería un trabajo muy grande, y no es algo que realmente deba abordar hasta que sea bastante experto en escribir aplicaciones usando varios otros marcos y kits de herramientas de widgets.

Hice algo como esto una vez, en los primeros años de esta década. Eso fue después de haber estado programando para Mac durante más de 15 años, Windows durante 10, y había programado directamente a sus gráficos nativos, eventos y API de widgets, así como a varios kits de herramientas orientados a objetos para ellos, incluidos PowerPlant, MFC y MacApp. Cuando comencé a trabajar en una aplicación PalmOS, pasé un par de semanas escribiendo un marco de aplicación muy pequeño modelado en PowerPlant. Pero no podría haber tenido éxito en absoluto sin esas décadas de experiencia amplia y profunda con tantos sistemas GUI.

Hacer esto para Linux / X11 es aún más trabajo. Esto se debe a que, a diferencia de Mac OS y Windows, ni X11 ni Linux proporcionan widgets de interfaz de usuario incorporados, o mucho en lo que respecta a primitivas gráficas o capacidades de diseño de texto. GTK + es parte del ecosistema GNOME; proporciona los widgets, obtiene su cola de mensajes y comunicaciones internas de GObject, confía en GDK para abstraer y simplificar sus comunicaciones de gráficos y eventos con X11, y utiliza Pango y Cairo para la representación y el diseño del texto. Trabajo a través de ese sistema, y ??probablemente represente muchas docenas de años de trabajo duro por parte de muchas personas realmente inteligentes. Y estoy seguro de que Qt es muy similar.

Entonces, si realmente quieres hacer esto, te recomendaría:

  1. Escriba programas con un lote de diferentes kits de herramientas de aplicaciones y widgets, en múltiples sistemas operativos. Eso lo ayudará a aprender no solo cómo tales sistemas funcionan, sino por qué están diseñados tal como están. Y le dará una idea de lo que funciona bien y lo que funciona mal.
  2. Contribuya con correcciones de errores o nuevas características a uno o más de los diversos marcos de código abierto. GTK + tiene una lista de tareas para que los principiantes trabajen . Otro gran marco de código abierto es wxWidgets .
  3. Conviértete en un programador experto en C / C ++.

Cuando lo haya hecho durante algunos años, tendrá la experiencia adecuada para abordar su propio marco.

Creo que algunas de las respuestas aquí podrían exagerar un poco. Obviamente, hacer algo de la misma calidad, ancho y profundidad que Qt y Gtk es una gran tarea. Pero puedes hacer cosas más simples y aún así aprender mucho sobre cómo funciona. Sugiero hacer lo que hice en la universidad. Usa OpenGL con Glut. Entonces ya tienes la funcionalidad de dibujo básica y el sistema de eventos en su lugar. Luego debe crear clases para botones, campos de texto, etc.

Si desea que sea realmente simple, cada componente solo necesita saber dónde se dibuja y tener algún tipo de cuadro delimitador donde verifique si el clic del mouse está dentro o no. También necesita crear algún sistema que permita que los botones, casillas de verificación, etc. le digan al resto de su código que se hicieron clic.

Esta no es realmente la ciencia de cohetes que la gente aquí dice que es. Los juegos han creado sus propios kits de herramientas GUI muy simples durante años. Puedes probar ese enfoque también. He modelado una GUI simple tomada encima de un motor de juego antes. Tus botones y campo de texto podrían ser simplemente sprites.

Pero sí, si quieres hacer algo que compita con Gtk + y Qt, olvídalo. Ese es un esfuerzo de equipo durante muchos años.

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