栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Qt之QSettings读写配置文件

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Qt之QSettings读写配置文件

简介

QSettings类提供了持久的跨平台应用程序设置。
用户通常期望应用程序记住它的设置(窗口大小、位置等)所有会话。这些信息通常存储在Windows系统注册表,OS X和iOS的属性列表文件中。在Unix系统中,在缺乏标准的情况下,许多应用程序(包括KDE应用程序)使用INI文本文件。
QT QSettings读写配置文件,来保存程序的初始值。
在做项目时,有时候同样的程序要运行在不同的环境或设备上,而这些环境不可能完全相同(比如IP地址),我们也不可能为为每一台设备都编译一个程序。 这时,配置文件就显示出了它的意义。
QSetting 由节、键和值组成, 可以理解为键是节的子集,值是键的内容。
配置文件的内容可手动修改,所以在程序里尽量不要去设置它的值(当然创建的时候可以设置初值,手动修改,以后只读取),而只是获取其值。

简单使用

1.创建

QSettings(QCoreApplication::applicationDirPath()+"/config.ini", QSettings::IniFormat, this);

2.更新值 // key,value

settings->setValue("/setting/currentTabIndex", index);

3.读取值

settings->value("/setting/currentTabIndex").toInt();
实验效果

核心源码

头文件

class Myapp
{
public:
    static QString AppPath;             //应用程序路径
    static int DeskWidth;               //桌面宽度
    static int DeskHeigth;              //桌面高度

    static QString SoftTitle ;          //软件标题
    static QString SoftVersion;         //软件版本
    static QString CompanyName;         //开发商名称
    static QString ContactName;         //联系人
    static QString ContactTel;          //联系电话


    static bool AutoRun;                //是否开机启动,在windows下有用

    static void ReadConfig();           //读取配置文件,在main函数最开始加载程序载入
    static void WriteConfig();          //写入配置文件,在更改配置文件、程序关闭时调用

};

初始化静态成员变量,设置默认值

//设置程序进行过程中需要的全局变量
QString Myapp::AppPath = "";
int Myapp::DeskWidth = 1024;
int Myapp::DeskHeigth = 768;
bool Myapp::AutoRun = true;

//存储全局配置信息,程序启动时加载,关闭时保存
QString Myapp::SoftTitle = "XXXX项目";
QString Myapp::SoftVersion = "V1.0";
QString Myapp::CompanyName = "XXXXX科技有限公司";
QString Myapp::ContactName = "XXXX";
QString Myapp::ContactTel = "XXXXXXXXXXX"; 

源文件

void Myapp::ReadConfig()
{
    QString fileName = Myapp::AppPath + "config.ini";
    //如果配置文件不存在,则以初始值继续运行
    //没有这个判断的话,配置赋值都为空
    if (!myHelper::FileIsExist(fileName)) {
        //对应中文转成正确的编码
        Myapp::SoftTitle = Myapp::SoftTitle;
        Myapp::CompanyName = Myapp::CompanyName;
        Myapp::ContactName = Myapp::ContactName;
        return;
    }

    QSettings *set=new QSettings(fileName,QSettings::IniFormat);
    set->setIniCodec("");

    set->beginGroup("AppConfig");
    Myapp::SoftTitle = set->value("SoftTitle").toString();
    Myapp::SoftVersion = set->value("SoftVersion").toString();
    Myapp::CompanyName = set->value("CompanyName").toString();
    Myapp::ContactName = set->value("ContactName").toString();
    Myapp::ContactTel = set->value("ContactTel").toString();
    set->endGroup();
}

void Myapp::WriteConfig()
{
    QString fileName = Myapp::AppPath + "config.ini";
    QSettings *set = new QSettings(fileName,QSettings::IniFormat);
    set->setIniCodec("UTF-8");
    set->beginGroup("AppConfig");
    set->setValue("SoftTitle",Myapp::SoftTitle);
    set->setValue("SoftVersion",Myapp::SoftVersion);
    set->setValue("CompanyName",Myapp::CompanyName);
    set->setValue("ContactName",Myapp::ContactName);
    set->setValue("ContactTel",Myapp::ContactTel);
    set->endGroup();
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/679458.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号