QMultihash的持久化
Persistence of a QMultihash
本文关键字:持久化 QMultihash 更新时间:2023-10-16
我想知道保存QMultihash的最佳方法是什么。我正在考虑将其保存为INI文件,使用QSettings,但是否有更好的方法来做到这一点,使其也易于加载?可能是序列化?
我想做的是,顺便说一句,是一个小的UI,可以管理文件夹中的图像,由几个算法使用,并跟踪哪个算法正在使用哪个图像。
谢谢!
没有标准的方法来做到这一点,特别是对于任意键和值类型。
下面是一个如何将QMultiHash<int, double>
转换为QVariant
的示例:
QVariant convert(QMultiHash<int, double> hash) {
QVariantList variant_hash;
for(QMultiHash<int, double>::Iterator it = hash.begin(); it != hash.end(); ++it) {
QVariantList list;
list << it.key();
list << it.value();
variant_hash << QVariant(list);
}
return variant_hash;
}
QMultiHash<int, double> convert_back(QVariant variant_hash) {
QMultiHash<int, double> new_hash;
foreach(QVariant item, variant_hash.toList()) {
new_hash.insertMulti(item.toList()[0].toInt(), item.toList()[1].toDouble());
}
return new_hash;
}
它将哈希的每一项存储为QVariantList,其中包含2项(键和值)。
任何QVariant都可以使用QSettings保存。如果你的键和值类型不被QVariant支持,你需要手动添加它们的支持。
如果您的键类型是QString,代码可以简化,因为QHash<QString, QVariant>
可以很容易地转换为QVariant。
请注意,QMultiHash只是一个方便的类,可以使用每个键有多个值的常规QHash。但是QHash在这方面也有完整的功能。因此,为QHash找到的任何解决方案也可以应用于QMultiHash。
相关文章:
- Gnuplot 持久化图形窗口
- 如何在c/c++中使函数调用之间的变量值持久化
- QMultiHash和类指针的值
- QxOrm可以持久化指向抽象类的指针
- C++ 持久化数据
- 如何使用新版本的 Node Nan 持久化
- SQLite:在 WAL 模式下持久化文件句柄
- 持久化sha256哈希对象
- 从移动返回的右值引用未持久化
- 重复项的 QMultiHash insert() 行为
- 如何迭代QMultiHash中的所有值()
- 持久化需要在C++中初始化的全局数据
- QMultihash的持久化
- 将CUDA中的缓冲加倍,这样CPU就可以对持久化内核产生的数据进行操作
- 指向动态容器的指针是否持久化
- 从一个内核启动到另一个内核启动的共享内存持久化
- 我是否需要使一个类型为POD,以便用内存映射文件持久化它?
- 当mod_dbd不支持我的驱动程序时,我该如何在Apache中持久化DB Conn
- 对于哪个标准容器(如果有的话),end()返回的迭代器是持久化的