用于 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 警告
Qt Quick QML 实例之疯狂数字游戏(QML C++混合编程翻译QSetting )建议收藏
Qt Quick QML 实例之疯狂数字游戏(QML C++混合编程翻译QSetting )建议收藏