【发布时间】:2014-12-11 16:56:08
【问题描述】:
我有以下代码将 QT QComboBox 链接到我的 sqlite 数据库,并且效果很好。
但是,在我的数据库中,我有与外键链接的 Category 和 Item 表。
因此,当我从 QComboBox 提取信息时,我需要获取 Category_ID 而不是框中列出的名称。
我将如何使用模型将 QComboBox ItemData 设置为 Category_ID 字段,或者更好地使用模型将 QComboBox ItemData 设置为我的类别对象?
谢谢,
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& ) 信号的插槽。在 slot 内,在 map 中查找 key,并获取 Category_ID。 -
其实这可能不是最好的方法。但是,我认为您将不得不进行某种查找,因为它发出的唯一内容是文本或索引。