用于 QList 的 QSetting<数据类型>

Posted

技术标签:

【中文标题】用于 QList 的 QSetting<数据类型>【英文标题】:QSetting<data type> for a QList 【发布时间】:2013-04-21 17:46:09 【问题描述】:

我有一个非原始数据类型的 QList,比如说

QList <DockWidget*> tmp;

我想将整个列表存储到设置中,用于写入和重新加载,这样我就不会在重启时丢失我的设置。

我试过了

settings.setValue("reference", tmp);

但读取时出现编译错误

tmp = settings.value("reference");

我应该如何读写这些设置?

【问题讨论】:

您到底想保存什么?无论如何,您都无法加载和重用指针。 我想恢复所有小部件的状态 @Roku 我希望我的应用程序恢复某些小部件的状态,从您的陈述来看,我似乎无法存储和使用指针,这似乎是真的。基本上怎么做? 您应该检查 QMainWindow 的 state storing feature 是否已经满足您的需求。 @Roku 实际上我有一些需要隐藏和显示窗口的任务。当我隐藏和关闭应用程序,然后启动应用程序并显示时,我需要以前隐藏的窗口 【参考方案1】:

那是行不通的。 QSettings.setValue() 围绕 QVariant 类进行操作,因此在您可以存储诸如

之类的东西之前
typedef QList<YouClass*> myListType;

您应该实现所有需要的包装器来将 myListTyoe 与 QVariant 相互转换。

【讨论】:

检查这个答案,它解释了你需要的一切***.com/questions/2452893/save-qlistint-to-qsettings 检查有关 Q_DECLARE_METATYPE 的文档 不幸的是,QSettings 无法与它们一起使用 - 必须手动序列化/反序列化。 我知道 =),但我认为回答问题仍然应该考虑一些功课 =)

以上是关于用于 QList 的 QSetting<数据类型>的主要内容,如果未能解决你的问题,请参考以下文章

在 Qml 代码中编辑 C++ QList<Object*> 模型的问题和一些 Qml 警告

如何清理复杂的 QList?

Qt Quick QML 实例之疯狂数字游戏(QML C++混合编程翻译QSetting )建议收藏

Qt Quick QML 实例之疯狂数字游戏(QML C++混合编程翻译QSetting )建议收藏

Qt Quick QML 实例之疯狂数字游戏(QML C++混合编程翻译QSetting )建议收藏

将 QList<std::string> 转换为 QList<QString>