| 
 | 
 
/*一个微型的物品管理程序:有物品显示栏,增加(减少)物品选项,增加(减少)物品的数量栏,增加(减少)物品的名称选项,和更新按钮*/ 
 
#include <gtk/gtk.h> 
gint state=-1;/*说明是要增加还是要减少的状态,1是增加,-1是减少*/ 
gchar *quality; /*用于记录*/ 
gint quality_int; 
gint i=0; 
gchar *my_data="显示器"; 
gchar* itoa(gint i)   /*定义itoa函数*/ 
{ 
    gchar *a=malloc(42); 
    if (a) sprintf(a,"%d",i); 
    return a; 
} 
/*表格的定义*/ 
   gchar *titles[]= 
{ 
   "名称","编号","数量" 
}; 
  gchar *rows[][3]= 
{ 
    {"显示器","BS111","12"}, 
    {"键盘","KD152","3"}, 
    {"鼠标","MU561","6"}, 
    {"主机","BO987","56"}, 
    {"音响","MK964","12"}, 
    {"主板","YT432","45"}, 
    {"软件","LINUX","1"} 
}; 
/* 取得数据行数*/ 
gint row_count = sizeof(rows) > 0 ? sizeof(rows)/sizeof(rows[0]) : 0; 
gchar *glist[]={"显示器","键盘","鼠标","主机","主板","音响","软件", NULL}; 
 
 
 
void quit_win(GtkWidget *window,gpointer *data) 
{ 
   gtk_main_quit(); 
} 
gint click_button1(GtkWidget *widget,gpointer *data) 
{ 
   state=1;   
   g_print("%s ",(gchar *)data); 
   return state; 
 } 
gint click_button2(GtkWidget *widget,gpointer *data) 
{ 
    state=-1;  
    g_print("%s ",(gchar *)data);       /*state的值是获得了*/ 
    return state; 
 } 
 
/*获取选项里面的东西*/ 
gpointer my_callback_function(GtkWidget *widget,gpointer *data) 
{ 
   my_data= gtk_combo_box_get_active_text(GTK_COMBO_BOX(widget)); 
   return my_data; 
} 
/*refresh_button所对应的函数*/ 
gchar refresh(GtkWidget *refresh_button,gpointer input_text) 
{ 
     guint tmp;  
     gint r; 
     quality=(gchar *)gtk_entry_get_text(GTK_ENTRY(input_text)); 
     quality_int=atoi(quality); 
     for(i=0;i<row_count;i++) 
     { 
        r=strcmp(rows[0],my_data);  
          if(!r) 
           { 
              tmp=atoi(rows[2])+state*quality_int; 
              if(tmp<0) 
                 { 
                  tmp=0; 
                 } 
                 rows[2]=itoa(tmp); 
                 g_printf("%d",tmp); 
                  return rows[2]; 
           } 
     } 
} 
gint main(gint argc,gchar **argv) 
{ 
   
    GtkWidget *window; 
    GtkWidget *refresh_button; 
    GtkWidget *hbox,*vbox,*hbox1; 
    GtkWidget *radio1,*radio2; 
    GtkWidget *group; 
    GtkWidget *combo; 
    GtkWidget *input_text; 
    GtkWidget *clist; 
    GtkWidget *add_button; 
    GtkWidget *delete_button; 
    /*初始化window*/ 
 
 gtk_init(&argc,&argv); 
    window=gtk_window_new(GTK_WINDOW_TOPLEVEL); 
   
    gtk_window_set_title(GTK_WINDOW(window),"Shop-Manager"); 
    gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER); 
    gtk_window_set_default_size(GTK_WINDOW(window),150,150); 
    /*设置输入框*/ 
   input_text=gtk_entry_new_with_max_length(3); 
  /*表格*/ 
  clist=gtk_clist_new_with_titles(3,titles); 
  gtk_clist_set_column_width(GTK_CLIST(clist),0,75); 
  gtk_clist_set_column_width(GTK_CLIST(clist),1,75); 
  gtk_clist_set_column_width(GTK_CLIST(clist),2,65); 
  /*表格内容的输入*/ 
for ( i=0; i< row_count; i++) 
    { 
        gtk_clist_append(GTK_CLIST(clist),rows); 
    } 
 
  /*关闭按钮*/ 
   g_signal_connect(GTK_OBJECT(window),"destroy",GTK_SIGNAL_FUNC(quit_win),NULL); 
   /*设置radio按钮*/ 
   radio1=gtk_radio_button_new_with_label(NULL,"增加"); 
   g_signal_connect(GTK_OBJECT(radio1),"clicked",GTK_SIGNAL_FUNC(click_button1),"增加"); 
   group=gtk_radio_button_group(GTK_RADIO_BUTTON(radio1)); 
    radio2=gtk_radio_button_new_with_label(group,"减少"); 
   g_signal_connect(GTK_OBJECT(radio2),"clicked",GTK_SIGNAL_FUNC(click_button2),"减少"); 
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio2),TRUE); 
   gtk_widget_show(radio1); 
   gtk_widget_show(radio2); 
    
   vbox=gtk_vbox_new(FALSE,0); 
  hbox1=gtk_hbox_new(FALSE,0); 
   hbox=gtk_hbox_new(FALSE,0); 
   refresh_button=gtk_button_new_with_label("更新"); 
  add_button=gtk_button_new_with_label("添加"); 
  delete_button=gtk_button_new_with_label("删除"); 
    gtk_container_add(GTK_CONTAINER(window),vbox); 
    /*设置组合框*/ 
  combo = gtk_combo_box_new_text (); 
   for (i = 0; i < 7; i++)  
         {  
         gtk_combo_box_append_text (GTK_COMBO_BOX (combo), glist); 
          } 
       gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0); 
       gtk_box_pack_start(GTK_BOX(vbox),clist,TRUE,TRUE,2); 
       gtk_box_pack_start(GTK_BOX(hbox1),combo,TRUE,TRUE,0); 
       gtk_box_pack_start(GTK_BOX(hbox1),add_button,TRUE,TRUE,0); 
       gtk_box_pack_start(GTK_BOX(hbox1),delete_button,TRUE,TRUE,0); 
       gtk_box_pack_start(GTK_BOX(vbox),hbox1,FALSE,FALSE,0); 
       gtk_box_pack_start(GTK_BOX(hbox),radio1,FALSE,FALSE,2); 
       gtk_box_pack_start(GTK_BOX(hbox),radio2,FALSE,FALSE,2); 
       gtk_box_pack_start(GTK_BOX(hbox),input_text,FALSE,FALSE,0);  
       gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,2); 
       gtk_box_pack_start(GTK_BOX(vbox),refresh_button,FALSE,FALSE,2); 
       gtk_widget_show_all(window); 
 
    /*点击按钮更新数据*/ 
    g_signal_connect(GTK_OBJECT(refresh_button),"clicked",GTK_SIGNAL_FUNC(refresh),input_text); 
    g_signal_connect(GTK_OBJECT(combo),"changed",G_CALLBACK(my_callback_function),NULL); 
    gtk_main(); 
    return 0; 
 } 
    改了表格里面某项的值后,显示表格里面的内容并没有刷新,有什么办法解决啊?谢谢了~~ |   
 
 
 
 |