Qt - 在(来自)文件中保存(或加载)qt 变量的最简单和最快的方法
Qt - easiest and fastest way to save (or load) qt variables in (from) file
我的应用程序中有大量的 qt 变量(QString、QMap、QList 等),我正在寻找最快和最简单的方法来将数据保存到文件和从文件加载数据。
谁能帮我怎么做?
如果你真的想从本地文件保存,你应该使用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 和 write/read 值 。请注意,一旦你这样做了一次,就会创建一个文件,你不再需要 setValue
您可以将 QDataStream http://doc.qt.io/qt-5/qdatastream.html#details to serialize your binary datas to save/load from a QIODevice (a QFile for example). See http://doc.qt.io/qt-5/datastreamformat.html 用于所有支持的格式,包括 QString、QMap ...
我的应用程序中有大量的 qt 变量(QString、QMap、QList 等),我正在寻找最快和最简单的方法来将数据保存到文件和从文件加载数据。
谁能帮我怎么做?
如果你真的想从本地文件保存,你应该使用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 和 write/read 值 。请注意,一旦你这样做了一次,就会创建一个文件,你不再需要 setValue
您可以将 QDataStream http://doc.qt.io/qt-5/qdatastream.html#details to serialize your binary datas to save/load from a QIODevice (a QFile for example). See http://doc.qt.io/qt-5/datastreamformat.html 用于所有支持的格式,包括 QString、QMap ...