我有一个以 QComboBox 作为模型的 QSqlQueryModel。该模型是从一个数据库构建的SELECT type_id, type FROM types 其中 type_idint , type 是 varchar

I set the QComboBox visible column with the setModelColumn(1) function, to see the actual types, instead of the indexes, but when a value is selected, I need to retrieve the type_id and I don't know how to achieve that.我这里不能使用 currentIndex() 函数,因为 QComboBox 的当前索引对我来说没用。

我认为正确的函数是 currentData() ,但我想不通,如何从第一列中获取数据...

最佳答案

另一个“解决方案”。我想出了以下解决方法:首先我将可见列设置为 0 ,检索 type_id ,然后将可见列设置回 1

ui->comboType->setModelColumn(0);
int type_id = ui->comboType->currentText().toInt();
ui->comboType->setModelColumn(1);

我不知道这样做有多正确,但它确实有效。

编辑:
最后,我找到了解决方案。我只需要修改一下 king_nak-s 的答案。谢谢king_nak!
int row = myComboBox->currentIndex();
QModelIndex idx = myComboBox->model()->index(row, 0); // first column
QVariant data = myComboBox->model()->data(idx);
int type_id = data.toInt();

关于c++ - 如何使用具有两列的模型获取 QComboBox 的当前值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33939914/

10-13 08:21