我想从 QComboBox 中删除所有项目。我用这段代码试了一下:
void refreshServiceComboBox(std::vector<QString> service){
if ( !s_serviceComboBox->isVisible() ){
s_serviceComboBox->setVisible( true );
}
int numberOfItems = s_serviceComboBox->count();
for (int i = (numberOfItems-1); i >= 0 ; i--){
s_serviceComboBox->removeItem(i);
}
for (int u = 0; u < service.size(); u++){
std::cout << "Service: " << service[u].toStdString() << std::endl;
}
//
for (unsigned int n = 0; n < service.size(); n++){
s_serviceComboBox->addItem(service[n]);
}
}
该方法的第一次调用有效,但在第二次调用时它不起作用。该函数通过调用“s_serviceComboBox->removeItem(i);”终止 s_serviceComboBox 是一个类元素,是用 new 创建的。有人知道解决方案吗?
编辑:
再次嗨,问题是在调用 s_serviceComboBox->addItems 时程序跳转到 connect(Widget, SIGNAL(), Widget, SLOT()) 执行此操作,然后跳转回 s_serviceComboBox->addItems 的位置。 . 在这个跳跃期间,他们覆盖了一些东西。当我通过输入函数使用 s_serviceComboBox->blockSignal(true) 和 s_serviceComboBox->blockSignal(false) 时,它可以正常工作 感谢您的帮助!顺便提一句。我用你的方法来刷新 QComboBox