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

Posted

技术标签:

【中文标题】Qt - 在(从)文件中保存(或加载)qt 变量的最简单和最快的方法【英文标题】:Qt - easiest and fastest way to save (or load) qt variables in (from) file 【发布时间】:2017-04-03 17:58:20 【问题描述】:

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

谁能帮我怎么做?

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

如果你想从本地文件中实际保存,你应该使用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

【讨论】:

我希望用户可以将数据保存在文件中并将其发送给另一个用户以导入这些数据。 QStringList 继承 QList&lt;QString&gt;

以上是关于Qt - 在(从)文件中保存(或加载)qt 变量的最简单和最快的方法的主要内容,如果未能解决你的问题,请参考以下文章

QT 如何让getSaveFileName 这个控件不弹出保存窗口直接指定路径保存

如何在qt中的QTableWidget中保存和加载数据

Qt C++:将项目保存在文件中[重复]

Qt - 如何将 QVector<QString> 保存并加载到多个标签中?

如何在 Qt 中从 3d 点数组中绘制和保存 3D 模型?

qt中保存内容到文件为啥要输出