【发布时间】:2011-01-28 00:22:42
【问题描述】:
我想将QList<int> 保存到我的 QSettings 而不循环它。
我知道我可以使用 writeArray() 和一个循环来保存所有项目或将 QList 写入 QByteArray 并保存它,但是在我的 INI 文件中它不是人类可读的..
目前我正在使用以下方法将我的QList<int> 转换为QList<QVariant>:
QList<QVariant> variantList;
//Temp is the QList<int>
for (int i = 0; i < temp.size(); i++)
variantList.append(temp.at(i));
为了将这个 QList<Variant> 保存到我的设置中,我使用以下代码:
QVariant list;
list.setValue(variantList);
//saveSession is my QSettings object
saveSession.setValue("MyList", list);
如我所见,QList 已正确保存到我的 INI 文件中(我的整数的逗号分隔列表)
但该函数在退出时崩溃。
我已经尝试使用指向我的 QSettings 对象的指针,但是它在删除指针时崩溃..
【问题讨论】:
-
我不明白的是,为了创建您的
QVariant列表,您需要遍历您的int列表,而这正是您试图避免的。我错过了什么吗? -
No .. 我认为我可以直接保存我的 QList
但它似乎只适用于 QList .. 我要避免的事情是用 writeArray 保存列表,因为列表应该写在另一个 writeArray 命令中,我不知道这是否可行.. -
我现在意识到它是一个 QString.. 而不是循环通过我的 QList
来创建一个 QList 我将值附加到一个 QString(逗号分隔),因为我喜欢它显示在 INI 文件中并在加载时拆分字符串(按“,”)并再次创建我的 QList 。