2012-11-21 131 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 –