2010-09-22 2 views
0

У меня проблема при добавлении ребенка в GtkVBox. VBox находится внутри GtkViewPort, который находится внутри ScrolledWindows.Добавить ребенка в GtkVBox

После того, как ребенок добавлен с помощью gtk_box_pack_end, я проверяю, действительно ли он добавлен, проверяя GLIST, и кажется, что он добавлен. Хотя визуально все появляется, а прокручиваемое окно становится действительно большим. Как если бы что-то действительно большое и невидимое было добавлено.

Код выглядит следующим образом:

GtkWidget *child; 
switch (response_id) { 
    case GTK_RESPONSE_ADD: 

     //The see the code for this function read the other 
     //piece of code i'm posting 
     child = (GtkWidget *)newChild(); 
     gtk_box_pack_end((GtkBox *)protocolsBox, child, 0, 1, 0); 

     GList *temp = gtk_container_get_children((GtkContainer *) protocolsBox); 

     //Here I do a while to check if the list has gotten bigger 

     break; 
} 

Функция newChild() выглядит следующим образом:

GtkHBox* newChild() { 
    printf("Creating new hbox\n"); 
    countProt++; 

    //creation of all the widgets to look for a service 
    GtkHBox* new = (GtkHBox *) gtk_hbox_new(0, 0); 
    GtkEntry* nameEntry = (GtkEntry *) gtk_entry_new(); 
    GtkEntry* domainEntry = (GtkEntry *) gtk_entry_new(); 
    GtkHButtonBox *buttons = (GtkHButtonBox *) gtk_hbox_new(1, 0); 
    GtkRadioButton *tcpButton = (GtkRadioButton *) gtk_radio_button_new_with_label_from_widget(NULL, "tcp"); 
    GtkRadioButton *udpButton = (GtkRadioButton *) gtk_radio_button_new_with_label_from_widget(tcpButton, "udp"); 

    //packing the radio button widget 
    gtk_box_pack_start((GtkBox *) buttons, (GtkWidget *) tcpButton, 0, 0, 0); 
    gtk_box_pack_end((GtkBox *) buttons, (GtkWidget *) udpButton, 0, 0, 0); 

    //packing the outer most widget 
    gtk_box_pack_start((GtkBox *) new, (GtkWidget *) nameEntry, 1, 1, 0); 
    gtk_box_pack_end((GtkBox *) new, (GtkWidget *) buttons, 0, 0, 0); 
    gtk_box_pack_end((GtkBox *) new, (GtkWidget *) domainEntry, 1, 1, 0); 

    return new; 
} 

Есть предложения?

ответ

1

Вы звоните gtk_widget_show() в свои новые виджеты?

+0

Да, код справа после его упаковки (не показан в примере кода). Я пробовал все функции шоу: show_all show_now и показать. Это увеличивает прокручиваемое окно, но ничего не показывает. – gvalero87

+0

Вы пробовали 'show_all' в своем главном окне, просто чтобы убедиться, что вы ничего не забыли? Если это не проблема, я думаю, что это должно быть где-то еще в вашей программе. Можете ли вы сделать минимальный пример, который воспроизводит проблему? – ptomato

+0

Я забыл сказать, что проблема решена. Это была моя ошибка. Я вызывал gtk_widget_show на другой виджет: s .. – gvalero87

Смежные вопросы