如何获取具有两列模型的 QComboBox 的当前值?

Aba*_*Aba 5 c++ qt qcombobox qt5 qt5.5

我有一个QComboBox以 aQSqlQueryModel作为模型的。该模型是根据数据库构建的,其中 SELECT type_id, type FROM typestype_idint类型是 a varchar

我使用QComboBox该函数设置可见列setModelColumn(1),以查看实际类型,而不是索引,但是当选择一个值时,我需要检索,type_id但我不知道如何实现。我不能在这里使用该currentIndex()函数,因为该函数的当前索引QComboBox对我来说没有用。

我认为正确的函数是currentData(),但我无法弄清楚如何从第一列获取数据......

Aba*_*Aba 7

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

ui->comboType->setModelColumn(0);
int type_id = ui->comboType->currentText().toInt();
ui->comboType->setModelColumn(1);
Run Code Online (Sandbox Code Playgroud)

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

编辑: 最后,我找到了解决方案。我只需要修改一点king_nak -s 答案。谢谢国王纳克

int row = myComboBox->currentIndex();
QModelIndex idx = myComboBox->model()->index(row, 0); // first column
QVariant data = myComboBox->model()->data(idx);
int type_id = data.toInt();
Run Code Online (Sandbox Code Playgroud)