QT应用编程: 应用程序的配置保存与恢复

2022-01-07 14:15:27 浏览数 (1)

一、环境介绍

操作系统介绍:win10 64位

QT版本: 5.12.6

二、功能介绍

应用程序运行时,用户经常会对程序做一些个性化设置; 关闭程序之后,下次打开还原上次的设置。程序里可以将这些设置保存到本地文件了存放,下次打开程序时,再加载进来即可。

QT内置的QDataStream 类提供了串行化处理数据流的方法。数据流是一个编码信息的二进制流,它与主机的操作系统、CPU 或字节顺序 100%的没有关系。 QT内置的QTextStream 和 QDataStream 都是面向数据流的, QTextStream 可以完成的功能 QDataStream 都能完成,但是他们的侧重点不同。 QTextStream 是针对文本流的处理, QTextStream 中存放的都是用来阅读的普通文本数据,QTextStream 的局限性主要是支持输入的数据类型较少,比如:像素图 QPixmap、颜色 QColor 这些类型的数据就无法保存。 在实际的软件中很多情况下都会用到二进制数据,比如:保存当前软件的配置信息,状态信息,网络数据包传输等。这些二进制数据的处理,就需要使用 QDataStream 实现。

QDataStream 可以将所有的 C 基本类型,包括 QT 自己封装的类型,按顺序分解成基本类型进行封装。

三、源代码

3.1 存放数据示例

代码语言:javascript复制
qint32 lcd_image_w=1920;
qint32 lcd_image_h=1080;
qint32 image_val=80;
quint16 server_port=8888;  //服务器端口号
//配置文件名称
#define ConfigFile "cofnig.ini"


//从UI界面获取用户的个性化配置参数
lcd_image_w=ui->spinBox_w->value();
lcd_image_h=ui->spinBox_h->value();
image_val=ui->spinBox_image_val->value();
server_port=ui->spinBox_port->value();

/*保存数据到文件,方便下次加载*/
QString text;
text=QCoreApplication::applicationDirPath() "/" ConfigFile;
QFile filesrc(text);
filesrc.open(QIODevice::WriteOnly);
QDataStream out(&filesrc);
out << lcd_image_w;  //序列化写---宽
out << lcd_image_h;  //序列化写---高
out << image_val;  //序列化写---质量
out << server_port; //服务器端口号
filesrc.flush();
filesrc.close();

3.2 读取数据示例

代码语言:javascript复制
qint32 lcd_image_w=1920;
qint32 lcd_image_h=1080;
qint32 image_val=80;
quint16 server_port=8888;  //服务器端口号
//配置文件名称
#define ConfigFile "cofnig.ini"


//读取配置文件
QString text;
text=QCoreApplication::applicationDirPath() "/" ConfigFile;

//判断文件是否存在
if(QFile::exists(text))
{
	QFile filenew(text);
	filenew.open(QIODevice::ReadOnly);
	QDataStream in(&filenew); // 从文件读取序列化数据
	in >> lcd_image_w >> lcd_image_h >> image_val>>server_port; //提取写入的数据
	filenew.close();

	//设置界面值
	ui->spinBox_w->setValue(lcd_image_w);
	ui->spinBox_h->setValue(lcd_image_h);
	ui->spinBox_image_val->setValue(image_val);
	ui->spinBox_port->setValue(server_port);
}

0 人点赞