QVariant可以把说有的类型的数据存储和读取,但是我们平时使用中
其中最重要的当然要数自定义类型。下面带你们领略终极实战
1、自定义结构体(.h文件下做如下工作)
struct MyStruct
{
int a;
char b[10];
};
MyStruct stu[40];//在class 的pulic里面定义
通过Q_DECLARE_METATYPE声明后,就可以让自定义的类型设置到QVariant
Q_DECLARE_METATYPE(MyStruct)//自定义结构体使用此声明 用于编译识别
2、进行终极实战测试(comboBox为定义的comboBox类型)
void MainWindow::value()
{
QVariant v;
QString ss;
for(int i = 0;i<10;i++)
{
// stu = (char *)malloc(MyStruct);
stu[i].a = 100;
strcpy(stu[i].b,"Hello");//类型转换
ss = QString("%1").arg(stu[i].b);
v.setValue(stu[i]);//设为Qvariant
ui->comboBox->addItem(ss, v);//保存到控件
}
ui->comboBox->addItem("heiheiehi", 0);
//从控件data域取得variant对象
v = ui->comboBox->itemData(0);
//转换为自定义的结构体实例
MyStruct s = v.value<MyStruct>();
qDebug("value=%d:%s",s.a, s.b);
}
参考博客为: