2010-02-24 69 views
0

我使用void gtk_toolbar_insert(GtkToolbar * toolbar,GtkToolItem * item,gint pos);将toolbarItem添加到GtkToolbar到工具栏崩溃的特定位置

如果我通过-1或0为pos,它工作正常。但如果我尝试其他任何职位,我会断言失败。 gtktoolbar.c行2244逻辑== 0。

我基本上遵循这个代码:除了位置。

的#include

INT主(INT的argc,字符* argv的[]){

GtkWidget *window; 
GtkWidget *vbox; 

GtkWidget *toolbar; 
GtkToolItem *new; 
GtkToolItem *open; 
GtkToolItem *save; 
GtkToolItem *sep; 
GtkToolItem *exit; 


gtk_init(&argc, &argv); 

window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); 
gtk_window_set_default_size(GTK_WINDOW(window), 250, 200); 
gtk_window_set_title(GTK_WINDOW(window), "toolbar"); 

vbox = gtk_vbox_new(FALSE, 0); 
gtk_container_add(GTK_CONTAINER(window), vbox); 


toolbar = gtk_toolbar_new(); 
gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_ICONS); 

gtk_container_set_border_width(GTK_CONTAINER(toolbar), 2); 

new = gtk_tool_button_new_from_stock(GTK_STOCK_NEW); 
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), new, -1); 

open = gtk_tool_button_new_from_stock(GTK_STOCK_OPEN); 
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), open, -1); 

save = gtk_tool_button_new_from_stock(GTK_STOCK_SAVE); 
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), save, -1); 

sep = gtk_separator_tool_item_new(); 
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), sep, -1); 

exit = gtk_tool_button_new_from_stock(GTK_STOCK_QUIT); 
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), exit, -1); 

gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 5); 

g_signal_connect(G_OBJECT(exit), "clicked", 
     G_CALLBACK(gtk_main_quit), NULL); 

g_signal_connect_swapped(G_OBJECT(window), "destroy", 
    G_CALLBACK(gtk_main_quit), NULL); 

gtk_widget_show_all(window); 

gtk_main(); 

return 0; 

}

感谢

回答

1

记住的位置从0开始。如果计数你添加位置0,1,2,3和4的项目,一切工作正常。

PS。如果您将代码缩进4个空格,那么Stack Overflow会正确格式化,并且读取和复制会更容易。

+0

因此,请按顺序添加项目。我不能添加在0,然后在10,然后在5. 它必须是0,然后1,然后2,....等 我会尝试这 – ryan 2010-02-24 21:00:36

+0

这工作非常感谢! – ryan 2010-02-24 23:11:58

相关问题