QT中如何在ComboBox中设置存放自定义类型

来源:互联网 发布:ubuntu 12.04 配置ip 编辑:程序博客网 时间:2024/04/29 02:04

假如我有一个自定义的类Scene,如今需要把Scene*的指针地址放入到ComboBox中。

1、首先在Dlg文件的顶端声明自定义类型,使QVariant::fromValue()方法可以识别自定义类型。

Q_DECLARE_METATYPE(Scene *)

2、在ComboBox元素插入的时候,把指针地址放入的QVariant中

ui.comboBox->insertItem(0, tr("All"));std::map<Scene*, std::set<ResourceFile*, FileCompare>> sceneMap = materialData_->sceneMap();std::map<Scene*, std::set<ResourceFile*, FileCompare>>::iterator itor;int i = 1;for (itor = sceneMap.begin(); itor != sceneMap.end(); itor++, i++){ui.comboBox->insertItem(i, stdStringToQString(itor->first->name()), QVariant::fromValue(itor->first));}

3、在响应ComboBox的currentIndexChanged(int)信号槽时

Scene* p = (Scene*)(ui.comboBox->itemData(index).value<Scene *>());

index为信号槽传入的当前ComboBox的索引。







0 0