qt中,qsettings类如何保存一个QList<MyType>数据,其中MyType是自定义类,已经用Q_DECLARE_METATYPE宏注册了
时间: 2024-03-16 10:44:05 浏览: 20
要将QList<MyType>数据保存到QSettings中,可以使用QVariantList作为中介:
```
QSettings settings("Organization", "Application");
QList<MyType> myList;
// 添加数据到myList中
QVariantList variantList;
for (const MyType& item : myList) {
variantList << QVariant::fromValue(item);
}
// 保存数据到QSettings
settings.setValue("MyList", variantList);
```
要获取保存的QList<MyType>数据,可以使用如下代码:
```
QSettings settings("Organization", "Application");
QVariantList variantList = settings.value("MyList").toList();
QList<MyType> myList;
// 转换为QList<MyType>
for (const QVariant& v : variantList) {
MyType item = v.value<MyType>();
myList << item;
}
```
需要注意的是,如果自定义类MyType没有默认构造函数,那么在使用QVariant::fromValue时可能会出现编译错误。此时可以在自定义类中添加一个默认构造函数,或者使用QVariant::setValue和QVariant::value函数来保存和读取数据。