假如我有一个自定义的类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的索引。