Pregunta

Estoy desarrollando una aplicación con GTK y Glade. Mi impresión es que es una práctica común para crear una subclase de GtkWindow para su ventana principal, pero estoy atascado en cómo iba a construir mi subclase de una definición GtkBuilder. ¿Alguien sabe cómo?

¿Fue útil?

Solución

subclases GtkWindow es más común en varios enlaces de lenguaje de GTK de lo que es en la llanura C. Usted no ha mencionado que el lenguaje que estaba utilizando.

Dicho esto, la forma en que subclase GtkWindow en C es crear el contenido de la ventana en Glade, pero no la propia ventana. En Glade 3 (IIRC) que puede hacer clic derecho en un widget en la paleta y elija "Añadir widget de nivel superior como" colocar un widget de nivel superior no sin un recipiente.

A continuación, escribir el código para su subclase de GtkWindow, llamémoslo MyAppWindow. No voy a entrar en eso en esta respuesta, ya que hay un montón de ejemplos en la documentación GObject. En la función init (my_app_window_init()) cargar el archivo de Glade, el uso gtk_builder_get_object() para obtener un puntero al widget más externa en el archivo de Glade, y el uso gtk_container_add() para añadirlo a la ventana que está construyendo. A continuación, utilice gtk_builder_connect_signals() como lo haría normalmente.

Hay que establecer todas las propiedades de la ventana manualmente esta manera, ya que no puede hacerlo en Glade, pero aparte de eso me he encontrado que funciona bastante bien.

Otros consejos

no es una práctica común a GtkWindow subclase.

No creo que es posible ventana de subclase de nivel superior creada a partir de la definición GtkBuilder.

necesidades GtkBuilder para saber sobre su widget subclase antes de la creación.

Si realmente desea crear su propia subclase de GtkWindow ptomato se describen los pasos básicos también. También es posible crear plugins para hacer claro a sus widgets personalizados disponibles. Pero esto no no es muy fácil, y muy probablemente lo que quiere hacer.

La mayoría de las aplicaciones sólo utilizan widgets estándar sin la subclasificación de cualquiera de ellos. A continuación, cargar un archivo claro con GtkBuilder (o libglade) no necesita tener una clase especial para su interfaz gráfica de usuario (como en algunas otras herramientas RAD) en lugar que acaba de obtener un conjunto de objetos. La API permite que se vean por nombre (y la ventana es, básicamente, sólo uno de ellos). Un enfoque común es buscar todos los widgets que se van a interactuar y almacenarlos en variables globales cuando el programa se pone en marcha. O si necesita varias instancias de la ventana puede crear una estructura para almacenarlos. O sea posible simple búsqueda de los widgets cada vez que los necesite. Tenga en cuenta que el conjunto de objetos que se obtiene es completamente dinámico. Por ejemplo, puede mover los widgets de entre las diferentes ventanas como si se creó la interfaz gráfica de usuario mediante programación.

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