我有 ini 格式的数据,这些数据最初是使用QSettings
(因此它包含一些QSettings
特定的语法)编写的,存储在QByteArray
. 我希望能够使用QSettings
. 不幸的是,开箱即QSettings
用似乎只能专门处理文件,不能用于QByteArray
派生QIODevice
自QBuffer
.
到目前为止,我已经找到了两种处理方法:
- 将数据临时转储到文件中,可能使用
QTemporaryFile
,并使用读取QSettings
- 创建一个可以从字节数组中读取数据的自定义实现,
QAbstractFileEngine
就像它是一个文件一样,正如这个十年老线程中所建议的那样。然而QAbstractFileEngine
,在 Qt 5 中不再公开,因此这不是一个可行的选择。
如果可能的话,我想避免将这些数据写入磁盘。自从那个旧帖子发布以来已经过去了十年。现在有更好的方法吗?
编辑:目前我决定使用QAbstractFileEngine
它,即使它在 Qt 5 中是私有的。至少它仍然在 Qt 5.15 左右。如果它被删除,我将更新我的代码以使用不同的方法。不过,我将保持这个问题的开放性,以防有人可以用另一种不使用的可行方法来回答QTemporaryFile
。
编辑 2:QAbstractFileEngine 仅适用于读取设置。不幸的是,使用 QSettings 编写设置总是假定文件是本机文件。