QComboBox返回None类型,如何获取当前数据?

0 投票
2 回答
4031 浏览
提问于 2025-04-16 08:45

我实现了两个下拉框(QComboBox),一个是每次手动添加选项,另一个是通过列表添加选项(我用的是Python)。

但是当我尝试获取下拉框当前的值时,它返回的是None。我按照这个问题中的说明进行了操作:我参考了这个。我提供了我写的代码。“command”和“option”是两个下拉框(抱歉代码风格不好)。请问索引方面有没有错误?

    self.command.insertItem(1,'Convert')
    self.command.insertItem(2,'Compose')
    self.command.insertItem(3,'Animate')


    self.option.insertItems(268,list)

然后是获取值的部分:
self.selected_com=self.command.itemData(self.command.currentIndex())
self.selected_opt=self.option.itemData(self.option.currentIndex())

2 个回答

0

你可以使用这段代码来获取组合框(comboBox)中的当前数据:

QString qualification=ui->comboBox->currentText();
QDebug()<<qualification;
1

你还没有在下拉框中选择当前的项目。如果没有选择任何项目,然后用 insertItem 插入一个新项目,这个新项目不会自动被选为当前项目。你可能想要调用 self.command.setCurrentIndex(1)self.option.setCurrentIndex(1) 来设置当前选中的项目。

关于 currentIndex() 的文档说明:

默认情况下,如果下拉框是空的,或者没有设置当前项目,这个属性的值是 -1。

关于 itemData() 的文档说明:

返回下拉框中给定索引的特定角色的数据,如果没有这个角色的数据,则返回 QVariant::Invalid。

关于 PyQt 的文档说明:

任何 Python 对象都可以在需要 QVariant 的地方使用。None 会被解释为无效的 QVariant。

撰写回答