今天在使用Qt对QComboBox控件添加内容时,不管是用下列两个函数中的哪个都会出问题。
void QComboBox::addItem(const QString &text, const QVariant &userData = QVariant())
void QComboBox::insertItem(int index, const QString &text, const QVariant &userData = QVariant())
之后对添加的内容、函数的使用方法甚至是ComboBox的属性都进行了再三确认,也在新工程上测试过,还是不行。
最后终于发现问题所在了:我的项目在构造函数中对该comboBox对象调用了信号槽连接,即:
QObject::connect(ui->comboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(comboBoxSlot()));
应该在调用QComboBox::addItem函数之前使用一下:
QObject::disconnect(ui->comboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(comboBoxSlot()));
在添加完成后再调用:
QObject::connect(ui->comboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(comboBoxSlot()));
即可。
总结:如果对ComboBox有做信号槽连接,那么在对其内容进行修改时应该先将信号槽连接断开,操作完成后再连接。