Qt - 在(from)文件中保存(或加载)qt变量的最简单,最快捷的方法

时间:2017-04-03 17:58:21

标签: qt file save load

我的应用程序中有大量的qt变量(QString,QMap,QList等),我正在寻找最快,最简单的方法来保存和加载文件中的数据。

任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

如果您想实际保存本地文件,则应使用QSettings

您可以轻松保存以下数据:

QList<QString> list = {"toto", "is it really working ?", "seems nice :)"};
QList<int> listInt = {3, 5, 8};

QList<QString> list2;
qRegisterMetaTypeStreamOperators<QList<QString> >("QList<QString>");
qRegisterMetaTypeStreamOperators<QList<int> >("QList<int>");

QSettings settings("Moose Soft", "Facturo-Pro", this);
settings.setValue("listData", QVariant::fromValue(list));
settings.setValue("listInt", QVariant::fromValue(listInt));
settings.setValue("test", 5);

list2 = settings.value("listData").value<QList<QString>>();

qDebug() << list;
qDebug() << list2;
qDebug() << settings.value("listInt").value<QList<int>>();
qDebug() << settings.value("test").value<int>();

我在这里创建了Stringint的列表,因为它是我们需要使用qRegisterMetaTypeStreamOperators来表示类型的特殊类型。

然后只需创建 QSettings 写/读取值。请注意,一旦您执行了此操作,就会创建一个文件,您不再需要setValue

答案 1 :(得分:0)

您可以使用QDataStream http://doc.qt.io/qt-5/qdatastream.html#details序列化二进制数据以从QIODevice(例如QFile)保存/加载。有关所有支持的格式,请参阅http://doc.qt.io/qt-5/datastreamformat.html,包括QString,QMap ......