您的位置:首页 > 编程语言 > Qt开发

解决QCombobox调用clear()崩溃的问题

2016-07-06 14:01 706 查看
使用QCombobox调用clear()来清除下拉框选项时,会出现程序崩溃的现象,而经过调试发现,问题出在

connect (ui->comboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(slotNameCom(int)))中的槽函数,slotNameCom如下所示:

void C_Del_user::slotNameCom(int index)

{

      Name_select = vecindex[index].name;

}

调试时发现index参数为-1,显而易见出现问题,由此看出当ui->comboBox->clear ()时,会触发currentIndexChanged(int)信号,而此时QCombobox又被清空,调用槽函数时就会崩溃。此时在槽函数中加入限制条件即可:

void C_Del_user::slotNameCom(int index)

{

    if(index >= 0){

        Name_select = vecindex[index].name;

    }

}

当然,也可以使用网上的其他方法,在调用clear()前,先执行disconnect (ui->comboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(slotNameCom(int))),此时就不会触发信号,在clear()之后再connect (ui->comboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(slotNameCom(int)))。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息