Я хочу удалить все элементы из 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 программа переходит к соединению (Widget, SIGNAL(), Widget, SLOT()) и после этого возвращается к позиции s_serviceComboBox->addItems.. , Во время этого прыжка они переопределяют некоторые вещи. Когда я использую s_serviceComboBox->blockSignal(true) путем ввода функции и s_serviceComboBox->blockSignal(false), все работает без проблем. Спасибо за помощь! Кстати. Я использую ваш метод для обновления QComboBox