QCombobox не выбирается при изменении currentIndex

В моем конструкторе я подключаюсь к базе данных Sqlite и читаю «Категории» (QStrings) из этого.
Я храню их в QList, Я проверил через отладчик, если они пустые, но все в порядке.

int currCategoryIndex установлен в 0 в моем списке инициализатора. И с тех пор QComboboxes начать индексирование с 0, это должен быть первый элемент.

Выписка из моего конструктора:

dm.readDB_C(c_list); //reads into c_list
if(c_list.count() > 0) //has 1 or more items
updateCategories();

Это та часть, где я читаю базу данных, проверяю, пуста ли она, и если нет, вызываю функцию, которая добавляет эти категории в QComboBox,

updateCategories() функция:

void MainWindow::updateCategories()
{
for(int i = 0; i < c_list.count(); i++){

if(ui->cmbCategory->findText(c_list[i]) != -1){ //-1 means "not found"continue;
} else {
ui->cmbCategory->addItem(c_list[i]); //Add to QCombobox
}
}
ui->cmbCategory->setCurrentIndex(currCategoryIndex); //Should be the first item
}

У меня есть все предметы в моем QCombobox, но ни один не выбран. Я должен нажать на коробку и выбрать один сам. Этого не должно быть.

Что случилось? Почему он не выбирает сам?

Редактировать:

currentIndexChanged сигнал:

void MainWindow::on_cmbCategory_currentIndexChanged(int index){
currCategoryIndex = index;
}

0

Решение

Возможно, первый товар пуст?
Поскольку вы только добавляете элементы в QComboBox, возможно, что индекс 0 является (с самого начала) пустой строкой.

попробуйте положить
ui->cmbCategory->removeItem(0);
в начале updateCategories, чтобы проверить, если это так

Кроме того, если currCategoryIndex является несуществующим индексом (например, -1), QComboBox также будет пустым (даже если нет пустой строки для выбора) — в этом случае вы можете попробовать жестко закодировать 0 в функции (если вы хотите элемент всегда должен быть первым), или добавьте дополнительную проверку, например:

if (0 > currentCategoryIndex || currentCategoryIndex > ui->cmbCategory->count())
currentCategoryIndex = 0
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]