加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 10:00:19 所属栏目:百科 来源:网络整理
导读:我有一个QSboBox,其QSqlQueryModel作为其模型.该模型由数据库构成 SELECT type_id,输入FROM类型,其中type_id为int,type为varchar. 我使用setModelColumn(1)函数设置QComboBox可见列,以查看实际类型而不是索引,但是当选择值时,我需要检索type_id,我不知道如何
我有一个QSboBox,其QSqlQueryModel作为其模型.该模型由数据库构成
SELECT type_id,输入FROM类型,其中type_id为int,type为varchar.

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

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

解决方法

另一个“解决方案”.我想出了以下解决方法:首先,我将visible列设置为0,检索type_id,然后将visible列设置为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();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读