• 9877阅读
  • 4回复

QComboBox -> removeItem() 有bug? [复制链接]

上一主题 下一主题
离线南茜
 
只看楼主 倒序阅读 楼主  发表于: 2010-11-15
for( int index = nAnimCount;index >= 0; index-- )
{
      animComboBox->removeItem(index);
}
animComboBox是QComboBox类型,想将animComboBox中的item全部清除,但是很诡异的是:当index = 0,运行完以后,即清除完之后,在后花括号" } "的地方crash掉,猜想是Qt自身的bug?(可能性不大) 或 堆栈的问题。crash处的截图如下:
  
离线dbzhang800

只看该作者 1楼 发表于: 2010-11-15
你可以写一个不超过20行的完整的程序 来测试能不能重现这个问题。

只看该作者 2楼 发表于: 2010-11-15
下标越界
0 1 2 3 4
五个元素, 开始应该是4,不是count 5.
离线dbzhang800

只看该作者 3楼 发表于: 2010-11-16
引用第2楼咖啡猫大人于2010-11-15 22:01发表的  :
下标越界
0 1 2 3 4
五个元素, 开始应该是4,不是count 5.


楼主并没说nAnimCount是个什么东西,如果是总个数, 这个地方是确实是越界了,但是:越界对这个函数来说,不会出错(Manual中特别强调的)。

不过,如果确实要清空所有元素,应该首选 clear 而不是 循环+removeitem。

下面这个会给出楼主更详细的答案:http://www.beiww.com/doc/oss/smart-questions.html
离线roywillow

只看该作者 4楼 发表于: 2010-11-16
话说如果是清空所有的Item的话为什么不用clear呢?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
快速回复
限100 字节
 
上一个 下一个