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

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

一、环境介绍

操作系统介绍: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 存放数据示例

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  读取数据示例

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);
}


目录
相关文章
|
3月前
|
网络协议 容器
【qt】 TCP编程小项目
【qt】 TCP编程小项目
66 0
|
4月前
|
Linux iOS开发 开发者
Qt问题(二):无法定位程序输入点于动态链接库
动态链接库(Dynamic Link Library,简称DLL)是一种可执行文件格式,常见于Windows操作系统中,而在Linux和macOS等其他操作系统中,相似的概念通常被称为共享库(Shared Library)。动态链接库允许程序在运行时加载所需的代码和数据,而不是在编译时静态链接到应用程序中。这种方式带来了几个重要的优点:
461 3
|
2月前
|
C语言 Android开发 C++
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
本文介绍了使用MTuner软件进行Qt MinGW编译程序的内存泄漏检测的方法,提供了MTuner的下载链接和测试代码示例,并通过将Debug程序拖入MTuner来定位内存泄漏问题。
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
|
3月前
|
API 开发工具 C语言
C语言与图形界面:利用GTK+、Qt等库创建GUI应用。
C语言与图形界面:利用GTK+、Qt等库创建GUI应用。
179 0
|
3月前
|
C++
【qt】VS中如何配置Qt环境
【qt】VS中如何配置Qt环境
187 0
关于Qt的pri模块化编程详解
关于Qt的pri模块化编程详解
|
3月前
|
JavaScript Java Go
【Qt】Qt编程注意事项
【Qt】Qt编程注意事项
|
4月前
|
监控 Python
`pytest-qt` 是一个用于在 Qt 应用程序中进行 GUI 测试的 pytest 插件。
`pytest-qt` 是一个用于在 Qt 应用程序中进行 GUI 测试的 pytest 插件。
|
4月前
|
调度
【浅入浅出】Qt多线程机制解析:提升程序响应性与并发处理能力
在学习QT线程的时候我们首先要知道的是QT的主线程,也叫GUI线程,意如其名,也就是我们程序的最主要的一个线程,主要负责初始化界面并监听事件循环,并根据事件处理做出界面上的反馈。但是当我们只限于在一个主线程上书写逻辑时碰到了需要一直等待的事件该怎么办?它的加载必定会带着主界面的卡顿,这时候我们就要去使用多线程。
157 6