2012-11-21 169 views
2

我在主窗口中有一個滾動窗口。我想,當我點擊刷新按鈕,scrolledwindow將刷新automatic.This的內容是回調按鈕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); 
} 

但是當我點擊按鈕,有什麼發梗。我該怎麼辦? 我很抱歉,因爲我的英語不好。 謝謝!

回答

3

button_re你正在創建新的標籤,按鈕等,這些不會顯示,直到你打電話給gtk_widget_show,以某種方式。在你的程序初始化的某個地方 - main()或許 - 你可能會在你的主窗口上調用gtk_widget_show_all,這個窗口遞歸地「顯示」它裏面的所有東西。但是直到你明確要求它們,這些新對象纔會顯示出來。

+0

哦,非常感謝ghbenhhhhhh,我解決了這個問題。 :) –

+0

@ĐăngphươngNguyễn如果答案對您有幫助,請不要忘記點擊答案旁邊的「接受」按鈕。 – user4815162342

+0

ohh,對不起,我會記住:D –