2012-11-21 4 views
2

주 창 안에 스크롤 창이 있습니다. 내가 버튼 새로 고침을 클릭하면 원하는, automatic.This 새로 고쳐집니다 scrolledwindow의 내용은 콜백 기능이 버튼GTK + - 스크롤 된 창 새로 고침

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); 
} 

는하지만 버튼을 클릭하면, 아무것도 happed 없습니다 . 어떻게해야합니까? 영어가 좋지 않아서 미안 해요. 감사합니다.

답변

3

button_re에서 새 레이블, 버튼 등을 만들 수 있습니다. gtk_widget_show을 호출 할 때까지 표시되지 않습니다. 어딘가에 프로그램의 초기화 - main() 아마도 - 아마도 당신은 gtk_widget_show_all 당신의 메인 창에 전화, 재귀 "그 안에"모든 것을 보여줍니다. 그러나 이러한 새 개체는 명시 적으로 요청할 때까지 표시되지 않습니다.

+0

오, 고맙습니다, gcbeninson,이 문제를 해결했습니다. :) –

+0

@ ĐăngphươngNguyễn 대답이 도움이 되었으면 대답 옆의 "동의 함"버튼을 클릭하는 것을 잊지 마십시오. – user4815162342

+0

오, 죄송합니다. D –