2012-11-21 2 views
2

У меня есть прокрутка в главном окне. Я хочу, чтобы, когда я нажмите кнопку обновления, содержание scrolledwindow освежит automatic.This является обратный вызов кнопкиGTK + - Обновить scrolledwindow

vbox = gtk_vbox_new(TRUE, 5); 
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), vbox); 
gtk_signal_connect(GTK_OBJECT(button_refresh), "clicked", GTK_SIGNAL_FUNC(button_re), NULL); 

есть функция обратного вызова:

void button_re(GtkWidget *window, gpointer data){ 
connectserver(myFile, numof);//connect to server and get information 
if(numof > 0){ 
    for(int i = 0; i< numof; i++){ 
     hbox = gtk_hbox_new(TRUE, 0); 
     gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 2); 
     sprintf(buffer, "%s", myFile[i].name); 
     label = gtk_label_new(buffer); 
     button_down = gtk_button_new_with_label("Download"); 
     gtk_signal_connect(GTK_OBJECT(button_down), "clicked", GTK_SIGNAL_FUNC(button_download), (gpointer) i); 
     gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, FALSE, 0); 
     gtk_box_pack_start(GTK_BOX(hbox), button_down, TRUE, FALSE, 0); 
    } 
}else if(numof == 0){ 
    label = gtk_label_new("Have nothing on server"); 
    gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, FALSE, 2); 
} 

Но когда я нажимаю кнопку, нет ничего случалось , Что мне делать? Мне очень жаль, потому что мой английский не очень хорош. Спасибо!

ответ

3

В button_re вы создаете новые ярлыки, кнопки и т. Д. Они не будут отображаться, пока вы не назовете на них gtk_widget_show. Где-то в инициализации вашей программы - main() возможно - возможно, вы назовете gtk_widget_show_all в своем главном окне, которое рекурсивно «покажет» все в нем. Но эти новые объекты не будут отображаться, пока вы явно не попросите их.

+0

О, спасибо, многого, я решил эту проблему. :) –

+0

@ ĐăngphươngNguyễn Если ответ вам помог, не забудьте нажать кнопку «принять» рядом с ответом. – user4815162342

+0

ohh, Извините, я запомню: D –

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

  • Нет связанных вопросов^_^