- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有大量数据存储在类型为 QList<QMap<QString,float>>
的变量中我需要保存变量以便轻松检索它。我想用 QSettings
将它保存到一个文件中但没有运气。我该怎么做?
最佳答案
为了保存某种类型的数据QSettings
使用 QDataStream
所以你必须为 QMap <QString, float>
实现它, 除了使用 qRegisterMetaTypeStreamOperators
注册它.
#include <QCoreApplication>
#include <QSettings>
#include <QDebug>
#include <QDataStream>
#ifndef QT_NO_DATASTREAM
QDataStream &operator<<(QDataStream &stream, const QMap<QString,float> &map)
{
QMap<QString, float>::const_iterator i = map.constBegin();
while (i != map.constEnd()) {
stream << i.key() << i.value();
++i;
}
return stream;
}
QDataStream &operator>>(QDataStream &stream, QMap<QString,float> &map)
{
QString key;
float value;
stream >> key;
stream >> value;
map[key] = value;
return stream;
}
#endif
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qRegisterMetaTypeStreamOperators<QMap<QString,float>>("QMap<QString,float>");
qRegisterMetaTypeStreamOperators<QList<QMap<QString,float>>>("QList<QMap<QString,float>>");
{
QSettings settings;
QList<QMap<QString,float>> l;
for(int i=0; i<3; i++){
QMap<QString, float> map;
map["a"] = 0.1*(i+1);
map["b"] = 0.2*(i+1);
map["c"] = 0.3*(i+1);
l<< map;
}
QVariant v = QVariant::fromValue(l);
settings.setValue("val", v);
}
{
QSettings settings;
QVariant v = settings.value("val");
QList<QMap<QString,float>> l = v.value<QList<QMap<QString,float>>>();
int j=0;
for(const QMap<QString, float> &map: l ){
qDebug()<< "index: " << j;
QMap<QString, float>::const_iterator i = map.constBegin();
while (i != map.constEnd()) {
qDebug() << i.key() << ": " << i.value();
++i;
}
j++;
}
}
return 0;
}
输出:
index: 0
"a" : 0.1
"b" : 0.2
"c" : 0.3
index: 1
"a" : 0.2
"b" : 0.4
"c" : 0.6
index: 2
"a" : 0.3
"b" : 0.6
"c" : 0.9
关于c++ - 如何将 QList<QMap> 保存到 QSettings 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54110512/
有没有办法设置 QSettings 存储的实际默认路径(有或没有文件名),并防止 QSettings 将组织名称等内容附加到该路径?这要求 QSettings 的进一步使用保持不变并且不知道设置存储路
你好,我有一个由应用程序生成的 Mac OS X plist 文件 (QSetting::NativeFormat),现在我想在不支持它的基于 Linux 的操作系统上使用这个 plist 文件。所以
Qt 错误报告链接:QTBUG-53313 从 Qt 5.5 迁移到 Qt 5.6 会出现一个问题 QSettings它在系统范围内找不到 QSettings 配置文件。在下面的 main.cpp 中
我程序里的设置挺多的,大概有3000个。它们不应该在程序开始时立即阅读,而是在需要时在程序的 10 个不同位置阅读。我想知道执行此操作的在性能/内存使用方面最有效的方法是什么: 1 始终打开一个“全局
我想用QSettings保存高分,但它不能正常工作。我在 2 个不同的文件中保存和读取这些值。 这是我负责将值添加到数组中的代码: QSettings settings; settings.begin
我从某个位置上传文件,然后下一次上传必须指向上次上传的位置。 我怎样才能使用 QSettings 来实现? ? 最佳答案 在使用 QSettings 之前,我建议在您的 main() 中设置一些有关您
我有 ini 格式的 QSettings 对象。 当我在 ini 文件中写入 settings.beginGroup("GENERAL") 时,我看到以下内容: [%常规] 为什么会这样? 最佳答案
我正在尝试为 QSettings 创建自定义格式,但无法从存储中读取它。 在下面的代码中,如果我运行 settings.setValue("test", 123") ,它会正确调用 write 函数并
我正在使用QSettings在Windows中将某些数据存储为ini文件。 我想查看ini文件,但我不知道ini文件的位置。 这是我的代码: QSettings *set = new QSetting
我使用 QSettings 来编辑 .desktop 菜单条目。我这样做: dfile 是一个 QString - 绝对文件路径 QSettings set(dfile, QSettings::Ini
我正在尝试在我的代码中使用 QSettings,但它无法正常工作。我的代码是: In Mainwindow.h QSettings settings (我已经在所有setOrganizationNam
我正在使用非图形用户界面产品的 Qsettings 将其设置存储到 xml 文件中。这是作为一个库编写的,可在 C、C++ 程序中使用。每个产品将有 1 个 xml 文件。每个产品可能有多个子产品,它
我想知道为什么这段基于虚假公司名称和应用程序名称创建 Qt 设置实例的代码不起作用。 这里是mainwindow.h,还有一个main.cpp,还有mainwindow.cpp,一个.pro文件,.u
我正在使用 Qsetting 来存储上次使用的值。我的代码只适用于一个领域。这意味着当我为第二轮应用相同的逻辑时它只工作一次,但它不会那样做。 文件io.cpp #include "fileio.h"
Does Qt has something like QSettings, but for local scopes? 我正在寻找具有相同方法但不特定于 APPLICATION 的数据结构。 我的意思
QSettings settings("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run",QSettings::Nati
有没有办法使用 QSettings 为每个键存储多个值,并将其存储在人类可读(无二进制文件).ini 文件中? 可能看起来像: key_1=value_1,value2 key_2=value_1 .
我正在尝试为我的 Qt 应用程序实现应用程序设置。我正在使用 QSettings ,像这样创建了我的类的实例 settings = new QSettings(qApp->organizationNa
我正在使用 QSettings 编写一个 .ini 文件,它将作为我的应用程序配置文件。只有一个问题: QSettings 将组名 [General] 添加到文件的顶部。 我这样设置文件: QSett
我编写了一个简单的应用程序来使用 QSettings。谁能告诉我我在这里做错了什么.. 主窗口.h class MainWindow : public QMainWindow { Q_OBJE
我是一名优秀的程序员,十分优秀!