解决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)))。
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)))。
相关文章推荐
- 清除浮动
- QT学习 第一章:基本对话框
- 使用Shiboken为C++和Qt库创建Python绑定
- Qt 5.6更新至RC版,最终版本近在咫尺
- VC6.0打开文件以及向工程中添加文件时程序崩溃自动退出解决方法
- Qt定时器和随机数详解
- Qt实现图片移动实例(图文教程)
- Qt for Android开发实例教程
- python使用clear方法清除字典内全部数据实例
- QModelIndex/Role/Model介紹<二>
- Qt Model/View/Delegate浅谈 - QAbstractListModel
- Qt Model/View/Delegate浅谈 - roleNames()
- QT历程(一):与CryptoJs对应的AES加密
- 基于PyQt5的快速开发框架QFramer
- OSX下安装PyQt
- ok6410开发板移植DirectFB手记
- 【笔记】给Qt内嵌一个Chrome吧
- 【算法】最短路径之A*搜索
- qt入门必备
- 在 Qt4 中使用 C++11