1.概要
使用QFile和QDataStream(或QTextStream)序列化一个类举例
2.代码
1.工程结构

2.工程文件
cmake_minimum_required(VERSION 3.14)
project(untitled4 LANGUAGES CXX)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core)
add_executable(untitled4
main.cpp
mypersistentclass.h mypersistentclass.cpp
)
target_link_libraries(untitled4 Qt${QT_VERSION_MAJOR}::Core)
include(GNUInstallDirs)
install(TARGETS untitled4
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
3.MyPersistentClass头文件
#ifndef MYPERSISTENTCLASS_H
#define MYPERSISTENTCLASS_H
#include <QObject>
#include <QString>
class MyPersistentClass : public QObject
{
Q_OBJECT
Q_PROPERTY(QString name READ name WRITE setName)
Q_PROPERTY(int age READ age WRITE setAge)
public:
explicit MyPersistentClass(QObject *parent = nullptr);
QString name() const;
void setName(const QString &name);
int age() const;
void setAge(int age);
void saveSettings() const;
void loadSettings();
private:
QString m_name;
int m_age;
};
#endif // MYPERSISTENTCLASS_H
4.MyPersistentClass源文件
#include "MyPersistentClass.h"
#include <QSettings>
#include <QDebug>
MyPersistentClass::MyPersistentClass(QObject *parent)
: QObject(parent), m_name("DefaultName"), m_age(0) {}
QString MyPersistentClass::name() const
{
return m_name;
}
void MyPersistentClass::setName(const QString &name)
{
m_name = name;
}
int MyPersistentClass::age() const
{
return m_age;
}
void MyPersistentClass::setAge(int age)
{
m_age = age;
}
void MyPersistentClass::saveSettings() const
{
QSettings settings("MyCompany", "MyApplication");
settings.setValue("name", m_name);
settings.setValue("age", m_age);
}
void MyPersistentClass::loadSettings()
{
QSettings settings("MyCompany", "MyApplication");
m_name = settings.value("name", "DefaultName").toString();
m_age = settings.value("age", 0).toInt();
}
5.主函数
3.运行结果
11:14:01: Debugging D:\projects\qts\untitled4\build\Desktop_Qt_6_7_2_MinGW_64_bit-Debug\untitled4.exe ...
Loaded settings: Name = "NewName" , Age = 30
Saved settings: Name = "NewName" , Age = 50
Reloaded settings: Name = "NewName" , Age = 50
1万+

被折叠的 条评论
为什么被折叠?



