c gtk + -2: не отображаются кнопки, добавленные в GtkHButtonBox - PullRequest
0 голосов
/ 05 марта 2011

Я пытаюсь создать простую программу, которая выбирает GtkHButtonBox из файла glade, добавляет к нему кнопку и отображает все окно.проблема в том, что я не вижу добавленных кнопок и не вижу предупреждений об ошибках или утверждениях.

это мой файл main.c:

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>

#include <gtk/gtk.h>


GtkBuilder *builder;


#define UI_FILE "gtk_hbuttonbox.ui"


int
main (int argc, char *argv[])
{
GtkWidget *window,*box, *button;


gtk_set_locale ();
gtk_init (&argc, &argv);
GError* error = NULL;

builder = gtk_builder_new ();
if (!gtk_builder_add_from_file (builder, UI_FILE, &error))
{
    g_warning ("Couldn't load builder file: %s", error->message);
    g_error_free (error);
}

/* This is important */
window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
box = GTK_WIDGET (gtk_builder_get_object (builder, "hbuttonbox1"));

g_object_unref (builder);

button = GTK_WIDGET(gtk_button_new_with_label ("moshe"));

gtk_box_pack_start (GTK_BOX(box),button,FALSE,FALSE,0);

gtk_widget_show (button);
gtk_widget_show (window);

gtk_main ();
return 0;
}

thisмой файл gtk_hbuttonbox.ui glade:

<?xml version="1.0"?>
<interface>
  <requires lib="gtk+" version="2.16"/>
  <!-- interface-naming-policy project-wide -->
  <object class="GtkWindow" id="window">
    <property name="visible">True</property>
    <property name="title" translatable="yes">window</property>
    <property name="default_width">500</property>
    <property name="default_height">400</property>
    <signal name="destroy" handler="destroy" object="NULL"/>
    <child>
      <object class="GtkHButtonBox" id="hbuttonbox1">
        <property name="visible">True</property>
        <child>
          <placeholder/>
        </child>
        <child>
          <placeholder/>
        </child>
        <child>
          <placeholder/>
        </child>
      </object>
    </child>
  </object>
</interface>

с использованием gtk + 2.22.1 и glade 3.6.7

есть идеи, как решить проблему?*

Ответы [ 2 ]

2 голосов
/ 05 марта 2011

возможно просто отсутствует gtk_widget_show (кнопка)?

0 голосов
/ 16 марта 2011

вместо

gtk_widget_show (button);
gtk_widget_show (window);

использование:

gtk_widget_show_all (window);

Это покажет главное окно и все его дочерние виджеты.

...