python - QSettings 与仅使用字典相比有什么优势?
问题描述
QSettings 在 C++ 中似乎是一个很棒的东西,它本质上是一个灵活的哈希表,其中键是字符串,值是 QVariant,所以它可以是相当多的类型。然而,在 Python 中我们已经有了这个,它是一个字典。所以我问,在 PyQt 中使用 QSettings 比仅使用 dict 有什么优势?
编辑:更简洁地说,我使用 QSettings 对象将特定设置分配给特定键的每一行,我都可以用字典做同样的事情。是的,QSettings 有一些细节,比如转换为 ini 文件,但我可以使用 json 模块将 dict 存储到文件中,并且代码行数相同。例如,就 QSettings 提供的能力而言,我试图理解为什么人们会使用它而不是仅仅使用 dict 和 json 模块。我已经仔细阅读了文档以了解 QSettings 提供的东西,没有任何东西对我来说是一个非常棒的功能,所以我基本上是在问,你认为 QSettings 最有益的功能是什么,为什么它优于使用一个 dict + json 模块
解决方案
从文档
用户通常希望应用程序在会话中记住其设置(窗口大小和位置、选项等)。此信息通常存储在 Windows 上的系统注册表中,以及 macOS 和 iOS 上的属性列表文件中。在 Unix 系统上,在没有标准的情况下,许多应用程序(包括 KDE 应用程序)使用 INI 文本文件。
QSettings 是围绕这些技术的抽象,使您能够以可移植的方式保存和恢复应用程序设置。它还支持自定义存储格式。
QSettings 的 API 基于 QVariant ,允许您以最少的工作量保存大多数基于值的类型,例如 QString 、 QRect 和 QImage 。
所以它实际上不仅仅是一个原始dict
对象,它处理与在重启之间保存应用程序状态相关的常见任务。它实现了许多方便的方法来实现这一点。
推荐阅读
- c - 在C中展开嵌套的for循环
- r - 列表列映射的意外输出
- python - Pandas MultiIndex Dataframe Groupby Rolling Mean
- node.js - MongoDB 客户端字段级别加密 - NodeJS 驱动程序 - 未在本地密钥库的数据密钥文档中创建 keyAltNames 字段
- flutter - 如何不渲染null?
- php - 通过在 Laravel 中添加特定项目来获取模型值
- c++11 - 件的控制流
- android - 可以在某个 android 版本之后删除库吗?
- node.js - 提交多个字段的表单
- typescript - 泛型类型函数中的类型“某物”上不存在属性