我的应用程序中有大量的qt变量(QString、QMap、QList等),我正在寻找最快和最简单的方法来保存和加载文件中的数据。
有人能帮我怎么做吗?
发布于 2017-04-04 02:14:38
可以使用QDataStream http://doc.qt.io/qt-5/qdatastream.html#details序列化二进制数据,以便从QIODevice (例如QFile )中保存/加载数据。所有支持的格式见http://doc.qt.io/qt-5/datastreamformat.html,包括QString、QMap .
发布于 2017-04-03 10:37:44
如果要从本地文件中实际保存,则应使用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>();
在这里,我创建了一个String
和int
列表,因为它是特殊类型,我们需要使用qRegisterMetaTypeStreamOperators
来指示类型。
然后只创建QSettings和写/读取值。请注意,一旦您这样做了一次,就会创建一个文件给您不再需要setValue
了
https://stackoverflow.com/questions/43191314
复制相似问题