您的位置:首页 > 编程语言 > Qt开发

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

2017-04-28 10:23 323 查看
假如我有一个自定义的类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的索引。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息