2013-08-10 6 views
0

제 생성자에서 Sqlite 데이터베이스에 연결하여 "Categories"(QString)를 읽습니다. QList에 저장합니다. 디버거를 통해 비어 있는지 확인했지만 모든 것이 정상입니다.QCombobox는 currentIndex를 변경할 때 선택하지 않습니다.

내 이니셜 라이저 목록에서 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

사용중인 Qt 버전을 지정해야합니다. –

+1

선택하지 않았습니까, 아니면 잘못된 항목을 선택 했습니까? – nonexplosive

+0

응용 프로그램을 시작할 때 아무 것도 선택되지 않지만 QCombobox에 삽입됩니다. – Davlog

답변

0

은 아마도 첫 번째 항목이 비어? QComboBox에만 항목을 추가하기 때문에 인덱스 0이 (처음부터) 빈 문자열 일 가능성이 있습니다.

시도 currCategoryIndex은 QComboBox는 비어 있습니다 (예 : -1에) 존재하지 않는 인덱스를 (경우에도 경우는, 또한 경우

있는지 확인하기 위해 updateCategories의 시작 부분에 ui->cmbCategory->removeItem(0); 을 가하고 - 선택할 수있는 빈 문자열이 없습니다.) -이 경우 함수에서 0을 하드 코드하려고 시도 할 수 있습니다 (항목을 항상 첫 번째 항목으로 지정하려는 경우).

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