我有一个1索引(readonly-)模型,并希望将它用于组合框。 我解析数据(来自文件解析器),例如:
1:变数1 ,这将是我的第一个项目,下一个 2:变数2 等。
当我点击一个项目时,来自QCombobox的currentIndex()
- 方法会给我一个0索引的int,所以我的问题是:
每当我在写回文件时解析文件+1分别为-1时我都不想写(尽管模型是只读的,我可以改变文件中的数据)。 (我有近30个UI,我需要模型,而且每个UI都要解析其他数据)
我目前使用的是:
virtual int currentIndex() const { return QComboBox::currentIndex() + 1; }
virtual void setCurrentIndex(int index) { QComboBox::setCurrentIndex(index-1); }
我知道这不太理想,因为(set-)currentIndex是not virtual。但为了避免+/- 1我现在用它。 anybode对这个问题有好的建议吗?
答案 0 :(得分:1)
如果您有自定义模型,则可以添加一个返回“真实”索引值的角色。
如果您只是使用字符串填充组合框,则可以使用setItemData()
和itemData()
方法关联参考值。
E.g。
comboBox->addItem("Number 1", 1);
和
int refValue = comboBox->itemData(comboIndex).toInt();
关联数据可以是可以存储在QVariant
。