当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 一个小型的物品管理程序,不知道哪有问题,求助!
帖子发表于 : 2008-05-27 13:51 

注册: 2008-05-13 20:25
帖子: 15
送出感谢: 0 次
接收感谢: 0 次
以下是源代码:
/*一个微型的物品管理程序:有物品显示栏,增加(减少)物品选项,增加(减少)物品的数量栏,增加(减少)物品的名称选项,和更新按钮*/

#include <gtk/gtk.h>
int state=0;/*说明是要增加还是要减少的状态,1是增加,-1是减少*/
unsigned int quality; /*用于记录*/
int i;
char *data;

/*表格的定义*/
char *titles[]=
{
"名称","编号","数量"
};
char *rows[][3]=
{
{"显示器","BS111","12"},
{"键盘","KD152","3"},
{"鼠标","MU561","6"},
{"主机","BO987","56"},
{"音响","MK964","12"},
{"主板","YT432","45"},
{"软件","LINUX","1"}
};
// 取得数据行数
int row_count = sizeof(rows) > 0 ? sizeof(rows)/sizeof(rows[0]) : 0;





void quit_win(GtkWidget *window,gpointer *data)
{
gtk_main_quit();
}

int click_button1(GtkWidget *radio1,gpointer *data)
{
state=1;
g_print("%s ",(char *)data);
return state;
}
int click_button2(GtkWidget *radio2,gpointer *data)
{
state=-1;
g_print("%s ",(char *)data);
return state;
}
/*获得要改变的量*/
unsigned int get_quality(GtkWidget *widget,gpointer input_text)
{

quality=(unsigned int)((char *)gtk_entry_get_text(GTK_ENTRY(input_text)));

return quality;
}

/*获取选项里面的东西*/
char *my_callback_function(GtkWidget *combo,gpointer glist)
{
data=(char *)gtk_entry_get_text(GTK_ENTRY((GtkWidget *)glist));;
return data;
}


/*refresh_button所对应的函数*/
void refresh(GtkWidget *widget,gpointer *rows[][3],gpointer data)
{
unsigned int tmp;
for(i=0;i<row_count;i++)
{
if(*data==rows[i][1])
{
tmp=(int)rows[i][3]+state*quality;
rows[i][3]=(char)tmp;
}
break;
}

}



int main(int argc,char **argv)
{
GtkWidget *window;
GtkWidget *refresh_button;
GtkWidget *quantity_input_text;
GtkWidget *scrolled;
GtkWidget *hbox,*vbox,*vbox1;
GtkWidget *radio1,*radio2;
GtkWidget *group;
GtkWidget *glist;
GtkWidget *combo;
GtkWidget *input_text;
GtkWidget *clist;
/*初始化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),200,150);
/*设置输入框*/
input_text=gtk_entry_new_with_max_length(3);
gtk_entry_set_text (GTK_ENTRY (input_text), 0);
/*表格*/
clist=gtk_clist_new_with_titles(3,titles);
gtk_clist_set_column_width(GTK_CLIST(clist),0,65);
gtk_clist_set_column_width(GTK_CLIST(clist),1,65);
gtk_clist_set_column_width(GTK_CLIST(clist),2,65);
for ( i=0; i< row_count; i++)
{
gtk_clist_append(GTK_CLIST(clist),rows[i]);
}

/*关闭按钮*/
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);
vbox1=gtk_vbox_new(FALSE,0);
hbox=gtk_hbox_new(FALSE,0);
refresh_button=gtk_button_new_with_label("更新");
gtk_container_add(GTK_CONTAINER(window),vbox);
/*设置组合框*/
glist=NULL;
glist=g_list_append(glist,"显示器");
glist=g_list_append(glist,"键盘");
glist=g_list_append(glist,"鼠标");
glist=g_list_append(glist,"主机");
glist=g_list_append(glist,"音响");
glist=g_list_append(glist,"主板");
glist=g_list_append(glist,"软件");
combo=gtk_combo_new();
gtk_combo_set_popdown_strings(GTK_COMBO(combo),glist);


gtk_box_pack_start(GTK_BOX(vbox),clist,TRUE,TRUE,2);
gtk_box_pack_start(GTK_BOX(vbox),combo,FALSE,FALSE,4);
gtk_box_pack_start(GTK_BOX(vbox1),radio1,FALSE,FALSE,2);
gtk_box_pack_start(GTK_BOX(vbox1),radio2,FALSE,FALSE,2);
gtk_box_pack_start(GTK_BOX(hbox),vbox1,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(input_text),"clicked",GTK_SIGNAL_FUNC(get_quality),input_text);
g_signal_connect(GTK_OBJECT(refresh_button),"clicked",GTK_SIGNAL_FUNC(refresh),NULL);
g_signal_connect(G_OBJECT(GTK_COMBO (combo)->entry), "activate",G_CALLBACK(my_callback_function),glist);

gtk_main();
return 0;
}


谢谢!!


_________________
感受LINUX的精神


最后由 NextBlue 编辑于 2008-05-27 21:18,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-05-27 14:27 
头像

注册: 2006-05-03 0:39
帖子: 8273
地址: المريخ
送出感谢: 0 次
接收感谢: 1
我也不知道


_________________
PHP是最好的语言!不服来战!


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-05-28 12:45 

注册: 2008-05-03 17:20
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
你先编译下啊


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译