如何编写QVector fo txt文件
How to write QVector fo txt file
我正在尝试将由我类的对象组成的QVector写入文件,但它有一些问题。我需要将一些对象保存到.txt文件中,然后读取它们。但储蓄并不正确。我能用什么方式释放它?
胶片.h
class Film
{
public:
QString title;
int year;
friend QDataStream &operator<< (QDataStream &stream, const Film obj)
{
stream << obj.title; //title only while i'm testing my program
return stream;
}
friend QDataStream &operator>> (QDataStream &stream, Film &obj)
{
stream >> obj.title;
return stream;
}
};
AddFilm.cpp
void AddFilm::slotOkButtonClicked()
{
QVector<Film> database;
Film film;
film.title = titleLine->text(); // QLineEdit where i input data
film.year = yearLine->text().toInt(); // QLineEdit where i input data
database.push_back(film);
QFile file("database.fdtb");
if(file.open(QIODevice::WriteOnly))
{
QDataStream out(&file);
out << film;
file.close();
}
在流式处理类之前,启动应用程序时,应在代码中的某个位置注册类的流运算符。这可以在主窗口的构造函数中完成:
qRegisterMetaTypeStreamOperators<Film>("Film");
现在,您可以将类的对象保存到文件或从文件加载类的对象。
将自定义类的一些对象保存到文件中:
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly)) {
QMessageBox::information(this, tr("Unable to open file"),
file.errorString());
return;
}
QDataStream out(&file);
out.setVersion(QDataStream::Qt_4_8);
out << object1;
从文件加载自定义类的对象:
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly)) {
QMessageBox::information(this, tr("Unable to open file"),
file.errorString());
return;
}
QDataStream in(&file);
in.setVersion(QDataStream::Qt_4_8);
in >> object1;
您也可以使用QSettings
在应用程序中保存对象:
QSettings settings("organizationName","applicationName");
settings.setValue("settings/ّFilm",QVariant(film));
或者阅读它们:
Film film = settings.value(QString("settings/film")).value<Film>();
Film
应该继承自QObject
,并且应该具有公共默认构造函数和复制构造函数以及公共析构函数。您还应该拥有宏Q_DECLARE_METATYPE(Film)
。
如果需要使用文件,可以为QSettings
:定义文件名
settings=new QSettings("Mysettings/film.ini", QSettings::IniFormat,this);
相关文章:
- 如何将 txt 文件中的行分隔为组件C++
- 无法打开.txt文件
- 如何使用CLion在Mac上创建一个新的.txt文件
- 使用fstream对txt文件中的数字进行循环
- Visual Studio在尝试读取resource.txt文件时崩溃
- 如何从txt文件中读取多个不同长度的数组?
- 在一次迭代中从 txt 文件中读取多行
- 通过比较C++中的行在 txt 文件中搜索的最简单方法是什么?
- 写入超过 1GB 的.txt文件时出现奇怪的行为
- 视觉 如何循环访问C++中遵循类似格式的多个.txt文件?
- txt 文件中浮点数的最大和最小值
- 从.txt文件中读取浮点型数字并在公式中使用它们
- C++将文本从.txt文件解析为变量
- 在树结构.txt文件中搜索节点
- 为什么我无法打开/读取从 Python 调用的 C 扩展名中的 txt 文件?
- 在 txt 文件中显示前两个数字的程序
- 如何从具有两列的.txt文件创建并行数组?
- 如何使用c ++读取带有非英文字母的*.txt文件?(国际化)
- 如何像在 C++ 中处理数组一样对 .txt 文件中的字符进行寻址?
- 如何读取 TXT 文件并仅将 int 存储在 C 中