QT ComboBox를 sqlite 데이터베이스에 연결하는 다음 코드가 있는데 잘 작동합니다. 그러나 내 데이터베이스에는 외래 키와 연결된 범주 및 항목 테이블이 있습니다. ComboBox에서 정보를 가져올 때 상자에 나열된 이름이 아닌 Category_ID를 가져와야합니다. 모델을 사용하여 ComboBox ItemData를 Category_ID 필드로 설정하거나 모델을 사용하여 ComboBox ItemData를 내 Category Object로 설정하는 방법은 무엇입니까?QT ComboBox 데이터베이스의 항목 데이터
void MainWindow::populatCat()
{
QSqlQueryModel *model = new QSqlQueryModel();
QString sql;
sql = "select Category_Name From Category ORDER BY Category_Name ASC;";
QSqlQuery* query = new QSqlQuery(db);
query->prepare(sql);
if(!query->exec()){
qDebug() << "Query Erorr: " << query->lastError();
}else{
qDebug() << "Query Successful: " << query->lastQuery();
}
model->setQuery(*query);
ui->cboCat->setModel(model);
}
쿼리에서 Category_Name 및 Category_ID를 가져 오지 않는 이유는 무엇입니까? 두 가지를 std :: map (Category_Name을 키로 사용)과 같이 저장하십시오. const QString &를 취하고 QComboBox의 currentIndexChanged (const QString &) 신호에 연결된 슬롯을 만듭니다. 슬롯 내부에서지도에서 키를 찾아 Category_ID를 가져옵니다. –
사실 그것은 아마도 최선의 방법은 아닙니다. 그러나, 나는 그것이 당신이 일종의 조회를해야 할 때까지 생각한다. 그것이내는 유일한 것은 텍스트 또는 그것의 색인이기 때문이다. –