Chinaunix首页 | 论坛 | 博客
  • 博客访问: 65672
  • 博文数量: 13
  • 博客积分: 1692
  • 博客等级: 上尉
  • 技术积分: 160
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-29 20:42
文章分类

全部博文(13)

文章存档

2011年(1)

2010年(1)

2009年(7)

2008年(4)

我的朋友
最近访客

分类: C/C++

2011-04-20 15:50:27

GtkComboBox中有个函数gtk_combo_box_remove_text可以删除指定的项,按照常规想法
(方法一):
for(i=0;i    gtk_combo_box_remove_text(GTK_COMBO_BOX(combobox), i);
结果不能全部删除,留下偶数项的内容,不知道为什么。
后来查看某个软件的源码,看到是这样做的 :
(方法二):
for(i=sum-1;i>-1;i--)
    gtk_combo_box_remove_text(GTK_COMBO_BOX(combobox), i);
是从最后一项开始删除的。
自己看了下referencemanual,又想出另一种方法,测试一下居然可以:
(方法三):
for(i=0;i     gtk_combo_box_remove_text(GTK_COMBO_BOX(combobox), 0);
删除的时候,始终指定Position为0,也即第一项。

分析:
为什么第一种方法不能全部删除,因为第一次删除之后,下一个项会自动成为第一项(后面自动往前移动一位),因此第二次删除的时候i为2,这个时候删除的是新的项目里的第二个,也即原始项里的第三项,依此类推,删除是奇数项,偶数项就没有删除了。
方法二,由于是从最后一项开始删除的,因此第一项始终保持不动。
方法三,虽然指数i一直在增大,但由于在gtk_combo_box_remove_text()始终指定position为0,也即第一项(删除前面一个,后面一个自动成为第一项),因此可以全部删除。




阅读(1612) | 评论(0) | 转发(0) |
0

上一篇:pdf文件转换和取消pdf加密

下一篇:没有了

给主人留下些什么吧!~~